python 的 GIL 是否会阻止在功能独立的 c++ 库中并行执行?
Does python's GIL prevent parallel execution in a functionally separate c++ library?
我计划编写一个 python 脚本,该脚本利用我正在处理的一些多线程 C++ 代码。 C++ 代码不会修改 python 运行时中的任何值。 python的全局解释器锁是否会阻止c++代码中的线程并行执行?如果是这样,有哪些好的资源可以帮助您了解如何解决这个问题?
python 脚本只会调用由 c++ 代码公开的接口:void notify_btn_pressed(int btn_id)
。 Python和c++代码不会有其他交互。
GIL 是一个 Python Interpreter 锁。 Python 字节码解释器不知道你的 C++ 库在幕后做了什么。它无法阻止您的 C++ 代码创建额外的线程,也不会试图阻止您这样做。
这是一些 background on the GIL and native code that explains this. And here is more general information about the GIL。这些参考资料适用于 Python 3.x,但 Python 2.x 的工作方式相同。您可以将 URL 中的 3
更改为 2
以查看相应的(几乎相同的)Python 2.x 文档。
我计划编写一个 python 脚本,该脚本利用我正在处理的一些多线程 C++ 代码。 C++ 代码不会修改 python 运行时中的任何值。 python的全局解释器锁是否会阻止c++代码中的线程并行执行?如果是这样,有哪些好的资源可以帮助您了解如何解决这个问题?
python 脚本只会调用由 c++ 代码公开的接口:void notify_btn_pressed(int btn_id)
。 Python和c++代码不会有其他交互。
GIL 是一个 Python Interpreter 锁。 Python 字节码解释器不知道你的 C++ 库在幕后做了什么。它无法阻止您的 C++ 代码创建额外的线程,也不会试图阻止您这样做。
这是一些 background on the GIL and native code that explains this. And here is more general information about the GIL。这些参考资料适用于 Python 3.x,但 Python 2.x 的工作方式相同。您可以将 URL 中的 3
更改为 2
以查看相应的(几乎相同的)Python 2.x 文档。