2
私はマルチプロセッシングが初めてです。私は、リストがワーカーのサブプロセスに送られ、変更され、印刷のために返送される、簡単なサンプルコードを変更しました。私は、複数のプロセスが実際に並行して実行されているかどうかをテストし、各プロセスが終了すると返されるように変更しました。私がこれをテストする方法は、合計[0]、合計[1]、合計[2]、合計[3]を同時に開始することです。しかし、は強制的に合計[2]切迫
合計[0]、合計[1]印刷:Python3、私の多重処理の例は並列処理を実行していません
結果。
合計[2]待機する必要がありますが、合計[3]も待機します。
出力戻り、次のように:
['', 'DOCTYPE', 'HTML'] ['LAST', 'NAV'] ['TOPIC', 'FORUM'] ['HEADLINE2', 'INNERHTML']
私はこのように返すためにそれを期待
['', 'DOCTYPE', 'HTML'] ['LAST', 'NAV'] ['HEADLINE2', 'INNERHTML'] ['TOPIC', 'FORUM']
私が言ったように、私は」サブプロセスにはまったく新しいものです。どんな助けもありがとうございます。おかげ
あなたの最後のfor
ループあなたはその結果を順に取得しているに私の例
import multiprocessing as mp
import time
def worker(inq,outq):
obj = inq.get()
for b in range(len(obj)):
obj[b] = obj[b].upper()
if obj[0] == 'TOPIC': time.sleep(9)
outq.put(obj)
total = [['', 'doctype', 'html'], ['last', 'nav'], ['Topic', 'forum'], ['headline2', 'innerHTML']]
if __name__=='__main__':
inq = []
outq = []
p = []
for i in range(len(total)):
inq.insert(i, mp.Queue())
outq.insert(i, mp.Queue())
p.insert(i, mp.Process(target=worker, args=(inq[i],outq[i])))
p[i].start()
inq[i].put(total[i])
for i in range(len(total)):
# Wait for the worker to finish
p[i].join()
result1 = outq[i].get()
print(result1)
私はこれを確認し、できるだけ早くあなたに連絡します。おそらく週末に – Rhys