嵌入 Python,使用非 Python 线程,Py_Finalize 错误

问题描述

这是在 Python 3.6.7 中从非 Python 创建的线程中发生的:

我们可以从主线程以外的地方做 Py_Finalize() 吗?

thread 1:

Py_Initialize();
PyRun_SimpleString("import os");
PyRun_SimpleString("import sys");
PyObject* module = PyImport_ImportModule("os");
std::string scriptPath = installroot+"/share/uxe/bin";
std::string path = "sys.path.append (\"" + scriptPath + "\")";
PyRun_SimpleString(path.c_str());
PyObject * import = PyImport_ImportModule("Infer_Gplace");
PyObject * attr = PyObject_GetAttrString(import,"infer_data");
instance = PyObject_CallObject(attr,NULL);
  
PyEval_InitThreads();
_save = PyEval_SaveThread();

thread 2:

PyEval_RestoreThread(_save);
Py_Finalize();

在执行 Py_Finalize() 时,我遇到以下错误

异常被忽略: 回溯(最近一次调用最后一次): 文件“/grid/cva/p4_03/python/v3.6.1_rel/tools.lnx86/TPtools/Python-3.6.1/lib/python3.6/threading.py”,第1296行,在_shutdown _main_thread._delete() 文件“/grid/cva/p4_03/python/v3.6.1_rel/tools.lnx86/TPtools/Python-3.6.1/lib/python3.6/threading.py”,第1015行,_delete del _active[get_ident()] 密钥错误:47862339710144

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)