我的(游戏)应用程序出现了问题,当涉及脚本部分时,它正在使用Boost.Python。如果您没有连接到外部服务器,我有一个客户端线程和一个在同一进程中运行的服务器线程。
这就是我出现问题的地方:似乎Python解释器无法在客户端线程中与服务器线程中的脚本并行执行脚本,因为它会导致应用程序崩溃。
所以我的问题是:是否有可能在Python解释器中并行运行两个(或更多)脚本? 我一整天都在搜索并发现了很多关于Py_NewInterpreter的信息,但这并没有解决我的问题,因为它使用GIL,我不希望解释器锁定其他脚本执行,因为它会导致客户端延迟和/或服务器端。
答案 0 :(得分:1)
截至今天,在同一进程中使用python线程时,无法避免GIL
次交互。
您可能需要查看multiprocessing
模块,该模块旨在轻松生成Python进程,因此无法与GIL
进行交互。
另一个选择是在包装的C / C ++函数中不需要它时显式释放GIL
。这可以使用PyEval_SaveThread
和PyEval_RestoreThread
函数来完成。