2016-02-25 183 views
3

我正在将一个mpi通信器从python传递给C.我选择使用boost的mpi通信器,因为mpi4py似乎没有良好的C支持。检查出来:“致命的Python错误:PyThreadState_Get:没有当前线程”是什么意思?

 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上安装。我使用homebrew的boost155公式安装了boost的mpi.so模块,然后将.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 *** 

回答

5

如果从针对比你正在运行的解释不同python库自制的公式链接.so文件,也看this threadthis response可能会出现此问题。

如果你没有其他的依赖关系,那么使用自制软件中的python解释器(应该位于/usr/local/bin/)运行你的程序可以解决这个问题。