Я передаю mpi-коммуникатор из python в C. Я решил использовать mpi-коммуникатор boost, так как mpi4py, похоже, не имеет хорошей поддержки C. Проверьте это:
try: from boost.mpi import world
except ImportError: from mpi import world
err = run_with_mpi(infile, world, stdout, stderr, exc)
В системах, где установлен boost.mpi, это не вызывает ошибок. Однако boost.mpi не может быть установлен на Mac. Я установил модуль mpi.so boost, используя формулу boost155 для homebrew, затем добавил .so файл в pythonpath.
Вообще, что делает Fatal Python error: PyThreadState_Get: no current thread
имею в виду? Какие подсказки дает это сообщение таким разработчикам, как я?
Полное сообщение об ошибке:
Fatal Python error: PyThreadState_Get: no current thread
[kilojoules-20160s:64471] *** Process received signal ***
[kilojoules-20160s:64471] Signal: Abort trap: 6 (6)
[kilojoules-20160s:64471] Signal code: (0)
[kilojoules-20160s:64471] *** End of error message ***
Эта проблема может возникнуть, если .so
файл из формулы доморощенного ссылки на другой python
библиотека, чем переводчик вы работаете, см. также эта тема а также этот ответ.
Если у вас нет других зависимостей, запустите вашу программу с помощью интерпретатора python из homebrew (который должен находиться в /usr/local/bin/
) может решить вопрос.
Других решений пока нет …