У меня есть следующий test_mpi.py
скрипт Python:
from mpi4py import MPI
import time
class Foo:
def __init__(self):
print('Creation object.')
def __del__(self):
print('Object destruction.')
foo = Foo()
time.sleep(10)
Если я выполняю его без обращения к mpiexec, используя простой python test_mpi.py
, нажимая CTRL + C через 5 с, я получаю следующий вывод:
ngreiner@Nathans-MacBook-Pro:~/Documents/scratch$ python test_mpi.py
Creation object.
^CTraceback (most recent call last):
File "test_mpi.py", line 26, in <module>
time.sleep(10)
KeyboardInterrupt
Object destruction.
ngreiner@Nathans-MacBook-Pro:~/Documents/scratch$
Если я встраиваю его в выполнение mpiexec, используя mpiexec -np 1 python test_mpi.py
, снова нажимая CTRL + C через 5 секунд, я получаю:
ngreiner@Nathans-MacBook-Pro:~/Documents/scratch$ mpiexec -np 1 python test_mpi.py
Creation object.
^Cngreiner@Nathans-MacBook-Pro:~/Documents/scratch$
Трассировку от python ивыполнение метода __del__ исчезло.Основная проблема для меня - это неисполнение метода __del__, который должен привести к некоторой очистке моего реального приложения.
Любая идея, как я мог бы выполнить метод __del__, когда выполняется Pythonзапущен из mpiexec?
Большое спасибо заранее за помощь,
(Конфигурация моей системы: macOS High sierra 10.13.6, Python 3.7.4, open-mpi 4.0.1,mpi4py 3.0.2.)