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
Мобильная версия