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
編集:いくつかの応答を読んだ後、多くのプロセスを任意に作成することはできないことは明らかであり、マルチプロセッシング ライブラリがそれらをキューに入れることを願っています。したがって、私にとってのフォローアップの質問は、同時に実行できるプロセスの最大数をどのように決定できますか?