我一直在調試這個非常簡單的代碼,它調用兩個函數,每個函數在完成之前等待1秒。我知道apply_async是假設從一羣工作人員並行運行作業。因此,如果有10個工人和20個等待命令提交,程序應該運行總共2秒,因爲1秒等待命令中的10個應該並行運行10個進程。我有20個等待命令的代碼持續運行20秒左右,向我表明我的並行化代碼嘗試不起作用。它運行20秒,無論我的游泳池中的工作人員數量是否有人對我可能會做錯的建議?謝謝!python multiprocessing apply_async似乎正在運行系列作業
from multiprocessing import Pool
def doubler(number):
time.sleep(1)
def double_trouble(number):
time.sleep(1)
if __name__ == '__main__':
start_time = time.time()
pool = Pool(processes=10)
for i in range(10):
pool.apply_async(double_trouble(i))
pool.apply_async(doubler(i))
pool.close()
pool.join()
print ("We took second: ", time.time()-start_time)
這真的應該被設計成引發錯誤。 – user2357112