【问题标题】:Regarding relation of multiprocessing with cores of server关于多处理与服务器核心的关系
【发布时间】:2015-02-18 07:46:16
【问题描述】:
对于以下代码,假设我有一台 32 核的机器,python 会决定为我创建多少进程?
from multiprocessing import Process
for i in range(100):
p = Process(target=run, args=(fileToAnalyse,))
p.start()
【问题讨论】:
标签:
python
python-2.7
python-multiprocessing
【解决方案1】:
不,它不由你决定。
要限制子进程的数量,需要使用a pool of workers。
文档中的示例:
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
pool = Pool(processes=4) # start 4 worker processes
result = pool.apply_async(f, [10]) # evaluate "f(10)" asynchronously
print result.get(timeout=1) # prints "100" unless your computer is *very* slow
print pool.map(f, range(10)) # prints "[0, 1, 4,..., 81]"
如果你省略processes=4,它将使用multiprocessing.cpu_count,它返回cpu的数量。