我试图使用multiprocessing
模块在Python中编写并行代码,我想知道一种在本地知道哪个CPU正在计算的方法,但我只知道{{1}知道总CPU核心。
我正在寻找相当于:
multiprocessing.CPU_count()
在C ++ openMP中。
Python.multiprocessing中有这样的方法吗?
答案 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
<强> 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.