python的GIL是否会阻止在功能独立的c ++库中并行执行?

时间:2018-03-05 02:58:22

标签: python c++ gil

我计划编写一个python脚本,它利用了我正在研究的一些多线程c ++代码。 c ++代码不会修改python运行时中的任何值。 python的全局解释器锁是否会阻止c ++代码中的线程并行执行?如果是这样,有什么好的资源可以理解如何解决这个问题?

python脚本只会调用c ++代码公开的接口:void notify_btn_pressed(int btn_id)。 Python和c ++代码没有其他交互。

1 个答案:

答案 0 :(得分:2)

GIL是一个Python Interpreter 锁。 Python字节码解释器不知道你的C ++库在幕后做了什么。它无法阻止您的C ++代码创建其他线程,也不会阻止您这样做。

以下是解释此问题的background on the GIL and native code。这是more general information about the GIL。这些引用适用于Python 3.x,但Python 2.x的工作方式相同。您可以将网址中的df1 <- data.frame(col1 = c("a", "b", "NA", "", "a", "b", "b"), col2 = rnorm(7), stringsAsFactors = FALSE) 更改为3,以查看相应的(几乎相同的)Python 2.x文档。