我想创建一个 PyThreadState
,因为当前线程似乎没有一个。
如何将当前的 PyInterpreterState 传递给 PyThreadState_New(...)
,或者这是我只有在嵌入解释器(并因此创建它)时才应该做的事情,而不是从 python 调用库?
最佳答案
我猜您可能正在进行多线程编程。最近,我也遇到类似的问题。希望以下代码对您有所帮助。
//in main thread
PyThreadState * mainThreadState = NULL;
Py_Initialize();
PyEval_InitThreads();
mainThreadState = PyThreadState_Get();
PyEval_ReleaseLock();
//in threaded thread
PyEval_AcquireLock();
PyInterpreterState * mainInterpreterState = mainThreadState->interp;
PyThreadState * myThreadState = PyThreadState_New(mainInterpreterState);
PyEval_ReleaseLock();
/*
* embeded python part
* PyEval_CallObject() for example
*/
关于python - 如何获取当前的 PyInterpreterState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4987579/