从您无法控制且无权访问的线程中释放 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 导入锁的主要内容,如果未能解决你的问题,请参考以下文章

threading库:Python线程锁与释放锁

Graphql - 无权访问来自 AWS AppSync Amplify 控制台的错误消息

线程同步

C# 无法访问已释放的对象

c# 无法访问已释放的对象

RxJava 如何在旧版本的主线程上观察?我无权访问 AndroidSchedulers.mainThread()