使用Pool.apply_async運行大量任務(使用大參數)時,會分配進程並進入等待狀態,並且等待進程的數量沒有限制。這可以通過吃所有的記憶結束,如下面的例子:Python多處理:如何限制等待進程的數量?
import multiprocessing
import numpy as np
def f(a,b):
return np.linalg.solve(a,b)
def test():
p = multiprocessing.Pool()
for _ in range(1000):
p.apply_async(f, (np.random.rand(1000,1000),np.random.rand(1000)))
p.close()
p.join()
if __name__ == '__main__':
test()
我在尋找一種方式來限制等待隊列,以這樣一種方式,只是在那裏等待處理的數量有限,並且Pool.apply_async在等待隊列已滿時被阻塞。
不錯例子(+1)。 – mgilson