[英]Multiprocessing Python
我有一台4 cpus的linux機器。
我有一個長時間運行的程序,需要在1024個主機上同時執行並將結果返回。
ipArrayList -> Contains list of host ips.
下面的程序運行正常,但需要很長時間,有時會掛幾天。
import multiprocessing
pool = multiprocessing.Pool(100)
pool.map(long_running_module,ipArrayList)
pool.close()
pool.join()
僅在輸入較少(ipArrayList的大小)的情況下,以下程序才能運行得更快。 如果ipArray列表中的IP數量很大,那么有時我會遇到緩沖區空間問題。([Errno 105]沒有可用的緩沖區空間)
job = []
for ip in ipArrayList:
p = multiprocessing.Process(target=long_running_module, args=(ip))
job.append(p)
p.start()
for j in job:
j.join()
long_run_module通過ssh(paramiko)連接到ipArrayList中的每個IP。 它在主機內部進行長時間運行的計算,然后將結果返回到同步列表。
請幫助我有效地對此進行編程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.