PyRun_SimpleString 每当使用导入时都会阻塞,从不 returns
PyRun_SimpleString is blocking whenever import is used, never returns
std::cout << "im in here!\n";
PyGILState_STATE sMain = PyGILState_Ensure();
if (sMain)
{
std::cout << "attempting\n";
PyRun_SimpleString("import sys; sys.exit();");
std::cout << "attempted!\n";
}
PyGILState_Release(sMain);
似乎从未尝试打印,但 sMain 有效且存在
PyRun_SimpleString 实际上从来没有出现在 return 中。 Python 有问题的代码也从未出现在 运行 中。
编辑:
所以我已经将问题缩小到每当我在字符串中导入模块时。
正常代码工作正常但是如果我导入功能块并且从不 returns
修复它,尝试使用 PyImport_ImportModuleNoBlock 导入,它报告模块锁被另一个线程持有 Python 2.7
std::cout << "im in here!\n";
PyGILState_STATE sMain = PyGILState_Ensure();
if (sMain)
{
std::cout << "attempting\n";
PyRun_SimpleString("import sys; sys.exit();");
std::cout << "attempted!\n";
}
PyGILState_Release(sMain);
似乎从未尝试打印,但 sMain 有效且存在 PyRun_SimpleString 实际上从来没有出现在 return 中。 Python 有问题的代码也从未出现在 运行 中。
编辑: 所以我已经将问题缩小到每当我在字符串中导入模块时。 正常代码工作正常但是如果我导入功能块并且从不 returns
修复它,尝试使用 PyImport_ImportModuleNoBlock 导入,它报告模块锁被另一个线程持有 Python 2.7