2

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

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

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

4

1 回答 1

1

GIL到今天为止,在同一进程中使用 python 线程时,您无法避免交互。

您可能想查看multiprocessing模块,该模块旨在轻松生成 Python 进程,因此不与GIL.

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

于 2012-04-03T21:56:12.877 回答