Pythonのmultiprocessingにおいて,関数のデータを保持したままにしたいです.
下記のコードにおいて,aが毎回リセットされてしまうのですが,前回の値を保持してそれの合計を表示するようにしたいです.
例としてこのコードを実行すると,
2
5
6
4
2
のような結果が出力されます.
Python3
1import multiprocessing 2import random 3import time 4 5a = 0 6 7def produce(queue,i): 8 global a 9 a += i 10 queue.put(a) 11 time.sleep(random.randint(1, 5)) 12 13 14def consume(queue): 15 n = queue.get() 16 print(n) 17 time.sleep(random.randint(1, 5)) 18 19if __name__ == '__main__': 20 queue = multiprocessing.Queue() 21 22 23 while(True): 24 i = random.randint(1,10) 25 26 p0 = multiprocessing.Process(target=produce, args=(queue,i)) 27 c0 = multiprocessing.Process(target=consume, args=(queue,)) 28 29 p0.start() 30 c0.start() 31 32 # プロセス終了待ち合わせ 33 p0.join() 34 c0.join()
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。