簡體   English   中英

Python多重處理-並行處理

[英]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.Poolapply_async閱讀該解決方案,作為對先前鏈接的問題的解答,因此,我對不使用這些解決方案的解決方案最感興趣。

是的,這將並行運行。

在嘗試加入一個進程之前,所有進程都已啟動,因此在第一個進程之后該進程不會阻塞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM