[英]Python Multiprocessing - Parrallel processes
我是Python多重處理的新手,我正在嘗試實現一些並行計算。 我得到的信息是:
#M is an integer, contains the number of processes I'd like to launch.
results = []
for i in range(0, M):
p = Process(target=processchild, args=(data[i],q))
p.start()
result.append(q.get())
p.join()
仍然是順序的,因為.join()
會使循環等待直到p
完成之后才開始下一個循環。 我在這里讀了一個答案
您要么想在for循環外單獨加入您的進程(例如,通過將它們存儲在列表中,然后對其進行迭代)...
因此,如果我將代碼修改為
results = []
for i in range(0, M):
processes[i] = Process(target=processchild, args=(data[i],q))
processes[i].start()
result.append(q.get())
for i in range(0, M):
processes[i].join()
它現在是否可以並行運行? 如果沒有,我如何修改我的代碼以這種方式工作? 我已使用numpy.Pool
和apply_async
閱讀該解決方案,作為對先前鏈接的問題的解答,因此,我對不使用這些解決方案的解決方案最感興趣。
是的,這將並行運行。
在嘗試加入一個進程之前,所有進程都已啟動,因此在第一個進程之后該進程不會阻塞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.