Решение PyImport_ImportModule() каждый раз дает сбойPython

Программы на Python
Ответить
Anonymous
 Решение PyImport_ImportModule() каждый раз дает сбой

Сообщение Anonymous »

Прошло много времени с тех пор, как я пытался найти решение вопроса, который задал некоторое время назад:
PyImportModule каждый раз аварийно завершает работу.
Наконец я нашел решение и объясню, как я это сделал.

Код: Выделить всё

const char* run_python(){
Py_Initialize();
PyRun_SimpleString("import sys\nsys.stderr = sys.stdout\n");
PyObject* pModule = Py_None;
pModule = PyImport_ImportModule("geo");
PyObject* get_currency = PyObject_GetAttrString(pModule, "get_currency");
PyObject* currencyPy= PyObject_CallObject(get_currency, NULL);
const char* currency1 = PyUnicode_AsUTF8(currencyPy);
if(currency1 == NULL){
printf("Something went wrong, tou must be connected to the Internet, try again!");
Py_DecRef(get_currency);
Py_DecRef(currencyPy);
Py_DecRef(pModule);
Py_Finalize();
} else {
Py_DecRef(get_currency);
Py_DecRef(currencyPy);
Py_DecRef(pModule);
Py_Finalize();
return currency1;
}
}
Когда я запустил его в первый раз, он работал нормально, но во второй раз произошел сбой.
Чтобы решить проблему, я удалил Py_Initialize( ) и Py_Finalize(), причем первую я поставил в самом начале программы, сразу после функции int main(){, а вторую поставил в самый конец программы.
Таким образом, эти строки кода выполняются только один раз, и все работает нормально.
Проблема заключалась в том, что при первой загрузке и инициализации Python. h, и он хорошо его завершил, затем во второй раз инициализация модуля заняла слишком много времени, и возникла ошибка TimeLimit.
Я так рад, что решил эту проблему и я обновлю свою новую программу на GitHub через несколько недель.
Также спасибо вам, ребята, и хорошего дня.

Подробнее здесь: https://stackoverflow.com/questions/791 ... every-time
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»