从您无法控制且无权访问的线程中释放 Python 导入锁
Posted
技术标签:
【中文标题】从您无法控制且无权访问的线程中释放 Python 导入锁【英文标题】:Release the Python import lock from a thread you do not control & do not have access to 【发布时间】:2015-05-20 19:28:52 【问题描述】:所以,我将一个 DLL 注入到 Cython 应用程序中以扩展其功能。我正在使用以下代码执行此操作: 注意:使用 Python 2.7;使用旧的 ModuleNoBlock 方案
PyGILState_STATE sMain = PyGILState_Ensure();
PyObject* mHook = PyImport_ImportModuleNoBlock("hookmodule");
PyGILState_Release(sMain);
现在,当我将 DLL 注入应用程序并打印错误时,我得到以下信息:
ImportError: Failed to import hookmodule because the import lockis held by another thread.
我找到了imp模块here的源代码
但是,_PyImport_ReleaseLock(void)
仅在您从获取锁的同一线程调用它时才会释放锁。
可以这样做吗?
【问题讨论】:
【参考方案1】:已修复。使用
_PyImport_ReInitLock(void)
导入前
【讨论】:
以上是关于从您无法控制且无权访问的线程中释放 Python 导入锁的主要内容,如果未能解决你的问题,请参考以下文章