Снимите блокировку импорта Python из потока, которым вы не управляете & amp; не имеют доступа к

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

Можно ли сделать это?

0

Решение

Исправлена. использование

_PyImport_ReInitLock(void)

перед импортом

0

Другие решения


По вопросам рекламы [email protected]