python c++扩展,GIL问题
在python的c++扩展中,我释放掉GIL锁(Py_BEGIN_ALLOW_THREADS)之后进行的操作 是否类似于启动了一个线程,一个真正的线程?
问题补充:我觉得在c++既然释放了GIL锁,那么我的python进程中其他的线程继续在调度(正常的单线程运行),而c++的外部方法则不会引发GIL锁定,那么我是否可以认为C++扩展中的方法 已经脱离了GIL的控制,成为一个真正的并行线程了(多核系统中)?
[解决办法]
没错,用Py_BEGIN_ALLOW_THREADS之后表示这个线程不再受GIL影响,在多核系统中就是真正的并行了。不过这个线程必须是用python api来启动的,否则在python解释器中会没有线程的状态数据,也就没法使用这个宏了。