Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 29, 2017 18:30:12

krpl
Зарегистрирован: 2017-06-29
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

перезагрузка модуля, проблема с потоками

Имеется приложение на C++ (Qt), к которому прикручен python (3.5) для написания модулей. Приложение следит за файлами *.py при помощи inotify, и при их изменении перегружает модуль.
Всё нормально работает, до тех пор пока код на python не создаёт потоки. Если создаёт, то после PyImport_ReloadModule() старые потоки не останавливаются…

bool SM_PythonModule::reloadModule()
{
PyObject *mod;
PyObject *py_result;
PyGILState_STATE gilstate;

logMessage(tr("reloadModule() %1").arg(m_name),e_notify);

...... лишнее вырезано .......

gilstate = PyGILState_Ensure();
mod=PyImport_ReloadModule((PyObject *)m_module);
if (mod==NULL)
{
PyErr_Print();
PyGILState_Release(gilstate);
m_isActive=false;
logMessage(tr("reloadModule() ERROR"),e_notify);
return false;
};
m_module=mod;
m_executeRequestGet = PyObject_GetAttrString(mod, "executeRequestGet");
m_executeRequestSet = PyObject_GetAttrString(mod, "executeRequestSet");
m_broadcastNotification = PyObject_GetAttrString(mod, "broadcastNotification");

...... лишнее вырезано .......

PyGILState_Release(gilstate);


Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version