python - python中ctypes创建的线程也在GIL下吗?

标签 python c multithreading ctypes gil

所有Python线程(在CPython中)都在GIL下。

如果线程是由ctypes创建的怎么办?

例如,python只是通过C Library调用以下函数,并且该函数在C区域而不是python中创建线程。

#include<thread>
int createUnitTestThread(int sasAddr){  
    sasEngine->thread = new std::thread(....);
    return 0;
}

是否相同?

最佳答案

这不像线程在GIL下,Python解释器中的操作是(包括大多数操作码的获取和执行之类的东西,所以这就是执行Python代码的线程大多互锁运行的原因)。

只要 C++ 线程不回调 Python 解释器中的函数(用户回调或来自 Python.h 的函数),它就会自由运行。

关于python - python中ctypes创建的线程也在GIL下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36194285/

相关文章:

c - 我需要释放局部变量吗?

java - 如何从我的线程倒计时类获取更新的变量

java - 在同一个 Process 对象上调用 Runtime.getRuntime.exec(commands) 两次

python - 从第二个函数调用返回相同的值

python - ROC 曲线看起来像不平衡数据的阶跃函数?

python - 在 Scrapy 管道中删除重复的项目值

c - 悬挂指针,free() 后值更改的原因?

python - pyqtgraph 散点图项 setbrush

c - 函数局部变量的字节分配以及 POP 指令是否仅调用一次

linux - 如何在多线程环境中实现垃圾回收?