Я пытаюсь запустить mpirun для кода на python, который уже был запущен через консоль, блокнот jupyter или из консоли Pycharm.Весь код выполняется нормально до вызова процесса mpirun, который полностью пропускается.
Я создал два кода, parallel.py
, который содержит действия, которые должны быть выполнены mpirun;и coder.py
, что вызывает parallel.py
.При запуске coder.py
выполняются все ключевые шаги, кроме вызова parallel.py
.При выполнении только parallel.py
код работает нормально.
parallel.py
from mpi4py import MPI
comm = MPI.COMM_WORLD
print('RANK %s'%comm.rank)
coder.py
import os, sys
syspath = os.path.dirname(os.path.realpath(__file__))
print('Running code')
com = 'mpirun -v -np 3 ' + str(sys.executable) + " -m mpi4py " + syspath + "/parallel.py"
os.system(com)
print('Done')
После вызова python coder.py
:
ОЖИДАЕТСЯ
Running code
RANK 1
RANK 0
RANK 2
Done
НАБЛЮДЕНО
Running code
Done
После звонка python parallel.py
:
RANK 1
RANK 0
RANK 2
Я думаю, что, позвонив os.system
после python
процесс уже "заблокирован" и os.system
не может вызвать mpirun
из-за этой "блокировки".
Если это так, есть ли способ обойти эту опцию?