![](/img/trans.png)
[英]python multiprocessing - process hangs on join for large queue
[英]Python 2.7: Multiprocessing, Queue and Join
我使用多處理模塊並行化了我的Python 2.7腳本,如下所示:
from multiprocessing import Queue, Process
def func(input_queue, result_queue):
my_object = input_queue.get()
# do something
result_queue.put([my_object, 0])
print "finished"
procs = []
chuncks = 4
input_queue = Queue()
result_queue = Queue()
j = len(my_objects)/chuncks
for i in range(chuncks):
input_queue.put(list(my_objects[(i*j):(i+1)*j]]))
for i in range(chuncks):
proc = Process(target=func, args=(input_queue, result_queue))
procs.append(proc)
proc.start()
print proc.pid
for proc in procs:
proc.join()
while not result_queue.empty():
print result_queue.get()
my_object
是我寫的類my_class
一個實例。
我的問題是:根據實現my_class
,我的代碼有效或無效。 如果我簡單地定義my_class
如下
class my_class(object):
def __init__(self):
print "bla"
一切順利。 但是“實際上”, my_class
更復雜(有幾個屬性)。 使用my_class
的實際實現執行上面的代碼會產生以下輸出:
1545
1546
1547
1548
finished
finished
finished
finished
然后,它在等待proc.join()
。 我究竟做錯了什么?
嘗試使用不同的隊列
m = multiprocessing.Manager()
queue1 = m.Queue()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.