运行两个与boost :: python并行的python脚本

时间:2012-04-03 20:04:28

标签: c++ parallel-processing boost-python cpython

我的(游戏)应用程序出现了问题,当涉及脚本部分时,它正在使用Boost.Python。如果您没有连接到外部服务器,我有一个客户端线程和一个在同一进程中运行的服务器线程。

这就是我出现问题的地方:似乎Python解释器无法在客户端线程中与服务器线程中的脚本并行执行脚本,因为它会导致应用程序崩溃。

所以我的问题是:是否有可能在Python解释器中并行运行两个(或更多)脚本? 我一整天都在搜索并发现了很多关于Py_NewInterpreter的信息,但这并没有解决我的问题,因为它使用GIL,我不希望解释器锁定其他脚本执行,因为它会导致客户端延迟和/或服务器端。

1 个答案:

答案 0 :(得分:1)

截至今天,在同一进程中使用python线程时,无法避免GIL次交互。

您可能需要查看multiprocessing模块,该模块旨在轻松生成Python进程,因此无法与GIL进行交互。

另一个选择是在包装的C / C ++函数中不需要它时显式释放GIL。这可以使用PyEval_SaveThreadPyEval_RestoreThread函数来完成。