Мой вопрос - как (и делает ли это) сборка мусора для модулей Fortran, скомпилированных как внешние модули (через f2py) и используемых скриптом Python?
Справочная информация
В настоящее время я работаю над программой конечных элементов, в основном написанной на Python (для удобства), которая использует несколько модулей подпрограмм Фортрана для задач, в которых нельзя избежать некоторых циклов (например, сборка / обновлениематрица касательной жесткости). Он успешно скомпилирован с использованием f2py ( быстрый способ ), и полученный DLL-файл импортируется как модуль Python в скрипт Python. Затем функции / подпрограммы могут быть успешно вызваны Python.
Модуль Fortran структурирован, как показано ниже, с различными подпрограммами, использующими некоторые глобальные переменные, определенные в модуле, и их собственные фиктивные переменные по мере необходимости.
module mod
integer, parameter :: iwp = SELECTED_REAL_KIND(15)
real(iwp), allocatable, dimension(:,:) :: points, der, matrix, jac, deriv, bee, g_coord
real(iwp), allocatable, dimension(:) :: fun, disps
real(iwp), allocatable, dimension(:,:,:) :: tensor
integer, allocatable, dimension(:,:) :: g_num, g_g
integer, allocatable, dimension(:) :: etype, weights
integer :: ndof,nodf,ndim,nels,nip,nod
contains
...subroutines,functions...
Глобальные переменные выделяются и присваиваются непосредственно из скрипта Python как F-смежные массивы с правильным типом (вероятно, плохой стиль, но он работает для меня). Это могут быть относительно большие массивы, и я хочу убедиться, что они были освобождены после успешного завершения сценария python ...
Любые другие предложения приветствуются! Большое спасибо