Python多处理:了解线程/ CPU编号

时间:2014-11-03 13:08:04

标签: python multithreading multiprocessing

我试图使用multiprocessing模块在​​Python中编写并行代码,我想知道一种在本地知道哪个CPU正在计算的方法,但我只知道{{1}知道总CPU核心。

我正在寻找相当于:

multiprocessing.CPU_count()

在C ++ openMP中。

Python.multiprocessing中有这样的方法吗?

1 个答案:

答案 0 :(得分:6)

检索进程正在运行的CPU(如果可能的话)并不是一件容易的事,但如果你:

  • 启动与可用CPU相同的进程数,如multiprocessing.CPU_count()所报告的那样,大多数应用程序都会这样做;

  • 假设在使用multiprocessing模块时,每个进程将在不同的CPU核心中运行;

然后你可以“欺骗”并给每个进程一个唯一的名称来识别它的CPU核心! :)

for i in xrange(multiprocessing.CPU_count()):
    mp = multiprocessing.Process(target=foo, args=(bar,), name=i).start()

然后在子进程中生成的worker函数中检索它:

print "I'm running on CPU #%s" % multiprocessing.current_process().name

来自official documentation

<强> multiprocessing.current_process().name

The process’s name.

The name is a string used for identification purposes only. It has no semantics.
Multiple processes may be given the same name.
The initial name is set by the constructor.