#pragma once #include"cstring" #include<fstream> #include<iostream> #include<string> #include<stdio.h> #include <Windows.h> #include "Python.h" #include <thread> /*全局解释和线程é”*/ class PyGILThreadLock { public: PyGILThreadLock() { _save = NULL; nStatus = 0; nStatus = PyGILState_Check(); //检测当å‰çº¿ç¨‹æ˜¯å¦æ‹¥æœ‰GIL //PyGILState_STATE gstate; if (!nStatus) { cout << "申请获å–GIL" << endl; gstate = PyGILState_Ensure(); //如果没有GIL,则申请获å–GIL nStatus = 1; } _save = PyEval_SaveThread(); PyEval_RestoreThread(_save); } ~PyGILThreadLock() { _save = PyEval_SaveThread(); PyEval_RestoreThread(_save); if (nStatus) { cout << "释放当å‰çº¿ç¨‹çš„GIL" << endl; PyGILState_Release(gstate); //释放当å‰çº¿ç¨‹çš„GIL } } private: PyGILState_STATE gstate; PyThreadState *_save; int nStatus; };