Итак, я внедряю 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 Вот
тем не мение _PyImport_ReleaseLock(void)
снимает блокировку только в том случае, если вы вызываете ее из того же потока, где была получена блокировка.
Можно ли сделать это?
Исправлена. использование
_PyImport_ReInitLock(void)
перед импортом