Я перевел приложение с Fortran на Python/NumPy и хочу проверить согласованность между реализациями Python и Fortran. Код Fortran предоставляет интерфейс через f2py
, поэтому я могу без проблем импортировать и вызывать подпрограммы Fortran из Python.
Проблема возникает при запуске нескольких тестов подряд. Код Fortran не полностью не имеет состояния и использует некоторые массивы allocatable
, поэтому запуск одного и того же кода дважды обычно приводит к сбою или приводит к разным результатам.
Я попытался импортировать библиотеку Fortran в другой процесс и связаться с основным процессом через multiprocessing.managers.BaseManager
, но происходит утечка памяти (похоже, что память, используемая переданными объектами, не освобождается). Я мог бы запускать каждый тест в отдельном процессе, но мне еще предстоит найти чистый способ сделать это с помощью pytest
.
Отсюда мой вопрос: есть ли способ принудительно перезагрузить общую библиотеку Fortran или, альтернативно, чистый способ запустить каждый тест в отдельном процессе с утверждениями, обратными трассировками и т. д., которые все еще хорошо работают?
Если это вообще возможно, я бы не хотел касаться рассматриваемого кода Fortran.
pytest -v --forked --numprocesses=1
для запуска каждого теста в отдельном процессе. - person phd   schedule 15.02.2018