对于下面的代码,假设我有一个32核机器,python会决定为我创建多少个进程?
from multiprocessing import Process
for i in range(100):
p = Process(target=run, args=(fileToAnalyse,))
p.start()
答案 0 :(得分: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的数量。