我正在尝试理解 python 中的多处理。
我做了一个测试程序,从一组列表中找到最大数量。它适用于有限数量的进程,但是如果我将数量增加到 5000 个进程,程序会在某些时候挂起。
难道我做错了什么?如果我增加进程数,它为什么会挂起?
这是我的代码:
from multiprocessing import Process, Manager
import numpy.random as npyrnd
def getMaxRand(_num, shared_dict):
'''
create a list of random numbers
picks max from list
'''
print 'starting process num:', _num
rndList = npyrnd.random(size= 100)
maxrnd = max(rndList)
print 'ending process:', _num
shared_dict[_num] = maxrnd
if __name__ == '__main__':
processes = []
manager = Manager()
shared_dict= manager.dict()
for i in range(50): #hangs when this is increased to say 5000
p = Process(target=getMaxRand, args=( i, shared_dict))
processes.append(p)
for p in processes:
p.start()
for p in processes:
p.join()
print shared_dict
编辑:阅读了一些回复后,很明显我不能随意创建许多进程,并希望多处理库为我将它们排队。所以我的后续问题是如何确定我可以同时运行的最大进程数?