判断Python程序是否运行并行
Determine if Python program is running in parallel
有没有办法通过mpirun
或mphexec
判断一个Python程序是否运行并行。我以为我可以通过获取 sys.argv
来获取此信息,但它不存在。有什么办法可以让我获得这些信息,也许是通过查看 mpi4py
模块?
如果使用mpi4py
包,可以检查MPI_COMM_WORLD通信子的大小是否大于1。如果是,则您是 运行 并行。如果不是,则您只 运行ning 一个进程。请注意,即使您 运行 您的脚本使用 mpi运行 命令(例如 mpirun -n 1 python test.py
)
,您也只能在一个进程上 运行
您可以通过以下代码行获取MPI_COMM_WORLD通信器的大小:
from mpi4py import MPI
comm = MPI.COMM_WORLD
size = comm.Get_size()
注意:此答案适用于不使用 mpi4py
但 multiprocessing
的人。
import multiprocessing
if multiprocessing.current_process().name == 'MainProcess':
print('Running on main process')
else:
rank = multiprocessing.current_process()._identity[0]
print(f'Running on process: {rank}')
有没有办法通过mpirun
或mphexec
判断一个Python程序是否运行并行。我以为我可以通过获取 sys.argv
来获取此信息,但它不存在。有什么办法可以让我获得这些信息,也许是通过查看 mpi4py
模块?
如果使用mpi4py
包,可以检查MPI_COMM_WORLD通信子的大小是否大于1。如果是,则您是 运行 并行。如果不是,则您只 运行ning 一个进程。请注意,即使您 运行 您的脚本使用 mpi运行 命令(例如 mpirun -n 1 python test.py
)
您可以通过以下代码行获取MPI_COMM_WORLD通信器的大小:
from mpi4py import MPI
comm = MPI.COMM_WORLD
size = comm.Get_size()
注意:此答案适用于不使用 mpi4py
但 multiprocessing
的人。
import multiprocessing
if multiprocessing.current_process().name == 'MainProcess':
print('Running on main process')
else:
rank = multiprocessing.current_process()._identity[0]
print(f'Running on process: {rank}')