Я использую внешний модуль, созданный из модуля 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, но у меня не так многоопыт работы с ними.