判断Python程序是否运行并行

Determine if Python program is running in parallel

有没有办法通过mpirunmphexec判断一个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()

注意:此答案适用于不使用 mpi4pymultiprocessing 的人。

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}')