0
参加は、私はこのようなマルチプロセッシングモジュールを使用することによって、私のPython 2.7のスクリプトを並列化:の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
すると、それstucks proc.join()
を待っている間に。私は間違って何をしていますか?
ご希望の出力は何を使用しようか? – AndyW
問題を示す最小限のプログラムをお試しいただけますか? –
この例では、出力は 'result_queue'の内容でなければなりません(実際、関数funcは私の投稿より複雑です。 result_queueへの計算(0ではなく)。) – Christine