我计划编写一个python脚本,它利用了我正在研究的一些多线程c ++代码。 c ++代码不会修改python运行时中的任何值。 python的全局解释器锁是否会阻止c ++代码中的线程并行执行?如果是这样,有什么好的资源可以理解如何解决这个问题?
python脚本只会调用c ++代码公开的接口:void notify_btn_pressed(int btn_id)
。 Python和c ++代码没有其他交互。
答案 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文档。