Форум сайта python.su
Имеется приложение на 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);
Офлайн