判断 Python 程序是不是并行运行

Posted

技术标签:

【中文标题】判断 Python 程序是不是并行运行【英文标题】:Determine if Python program is running in parallel判断 Python 程序是否并行运行 【发布时间】:2019-09-21 21:28:30 【问题描述】:

有没有办法通过mpirunmphexec 查明Python 程序是否在并行运行。我以为我可以通过获取sys.argv 来获取此信息,但它不存在。有什么方法可以让我获得这些信息,也许是通过查看mpi4py 模块?

【问题讨论】:

【参考方案1】:

如果你使用mpi4py包,你可以检查MPI_COMM_WORLD通信器的大小是否大于1。如果是,则您正在并行运行。如果没有,您只在一个进程上运行。请注意,即使您使用 mpirun 命令(例如 mpirun -n 1 python test.py)运行脚本,也只能在一个进程上运行

您可以通过以下代码行获取 MPI_COMM_WORLD 通信器的大小:

from mpi4py import MPI
comm = MPI.COMM_WORLD
size = comm.Get_size()

【讨论】:

【参考方案2】:

注意:此答案适用于不使用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')

【讨论】:

以上是关于判断 Python 程序是不是并行运行的主要内容,如果未能解决你的问题,请参考以下文章

并发和并行

批处理判断进程是不是存在 存在就继续执行,否则等待5秒后

如何判断 OpenMP 是不是正常工作?

编写一个函数,判断三个数是不是能构成一个三角形,python

运行时判断程序是不是在Wine下运行

判断 Python 是不是处于交互模式