Python свежий импорт внешнего модуля (f2py) в новый поток / процесс? - PullRequest
1 голос
/ 20 сентября 2019

Я использую внешний модуль, созданный из модуля fortran с f2py, который содержит функцию, которую я запускаю несколько раз.

Базовый fortran (который я не могу контролировать) немного привередлив и иногда вызывает проблемы сотслеживание, какие массивы уже были выделены.Когда это происходит, в следующий раз, когда я вызываю функцию, возникает ошибка сегментации, которая приводит к сбою всего сеанса Python.

Тем не менее, я могу диагностировать, когда возникает эта проблема, т.е. я знаю, буду ли я вызывать эту функцию в следующий разпотерпит крахЯ хочу знать, есть ли способ сделать «свежий» импорт модуля f2py на этом этапе.

Я надеюсь, что, возможно, есть способ загрузить внешний модуль в отдельный поток или процесс, которыйпозже можно убить и начать заново?

Я представляю себе что-то вроде этого:

def funcwrapper():
    newprocess = start_new_process() #start a new process somehow
    newprocess.run('import f2py_module') #import f2py module into the new process
    newprocess.run('result = f2py_module.func()') #run the function
    result = newprocess.retrieve('result') #somehow get the result back into the main process
    newprocess.terminate() #kill the new process
    return result

Я чувствую, что это возможно с MultiProcessing или Threading, но у меня не так многоопыт работы с ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...