python - 如何获取当前的 PyInterpreterState?

标签 python c multithreading python-c-api

我想创建一个 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/

相关文章:

python - 程序显示为几位数

Python 数学模块对数函数

python 3 : unsupported operand type(s) for +: 'float' and 'str'

python - 如何使用 Openpyxl 的表模块创建表?

c - OpenMP 并行可减慢我的代码速度(C 语言)

c - uv_fs_open : flags and mode on Windows

c++ - 通过提供 DLLName 定位 DLL 路径

multithreading - 跟踪后台进程?

php - 用户线程 : list in Gmail API not working with maxResults

swift - 线程 1 exc_bad_instruction.. 快速错误