【发布时间】:2019-06-03 15:57:45
【问题描述】:
我正在使用 SLURM 在集群上测试 Python 的 multiprocessing 模块。我想绝对确保我的每个任务实际上都按照我的意图运行在单独的 cpu 内核上。由于配置 SLURM 的可能性很多,这一点都不明显。
因此,我想知道是否有办法从正在运行的 Python 任务中获取核心特定信息。我需要我的 Python 脚本来获取有关它运行的内核的信息,以便区分各种内核。
考虑以下脚本。启动了 10 个任务。有没有办法让他们每个人打印关于他们被分配到的核心的核心特定信息?
import multiprocessing
def hello():
print "Hello World"
pool = multiprocessing.Pool()
jobs = []
for j in range(10):
p = multiprocessing.Process(target = hello)
jobs.append(p)
p.start()
我找到的模块 here 和 here 提供了 CPU 的特定信息,但这些是关于可用 CPU 的,而不是运行时的核心信息。
【问题讨论】:
-
我认为没有任何方法可以在 Python 中执行此操作,除非解析像
top这样的 shell 命令的输出。请记住,这些信息通常也不是静态的。即使您可以获得工作进程的当前核心,调度程序也可能稍后将其放在不同的核心上,除非您已分配核心亲和性。虽然我之前没有使用过 SLURM,所以我不知道这会如何影响该声明。
标签: python multiprocessing python-multiprocessing cpu-cores