簡體   English   中英

Python 2.7:多處理,隊列和連接

[英]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.

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