#pragma once #include"cstring" #include #include #include #include #include #include "Python.h" #include /*全局解释和线程锁*/ class PyGILThreadLock { public: PyGILThreadLock() { m_acquired = false; //检测当前线程是否拥有GIL if (!PyGILState_Check()) { cout << "load GIL" << endl; m_gil_state = PyGILState_Ensure(); //如果没有GIL,则申请获取GIL m_gil_state = true; } } ~PyGILThreadLock() { if (m_acquired) { cout << "reload GIL" << endl; PyGILState_Release(gstate); //释放当前线程的GIL } } private: PyGILState_STATE m_gil_state; bool m_acquired; };