以下のコードにて関数something()の因数nが10など小さい値のときは正常に出力されるのですが、nが100000など大きくなると正常に機能しなくなります。
「完了」という文字は出力されるため、関数sopmething()は明らかに終了しているのに、multiprocessing.join()の所で処理が止まったままになります。
重い処理を行うとjoin()は機能しなくなってしまうのでしょうか?
python
1from multiprocessing import Process, Queue 2 3def something(queue, n): 4 5 queue.put([i for i in range(n)]) 6 7 print("完了") 8 9if __name__ == "__main__": 10 11 test = Queue() 12 13 p1 = Process(target = something, args = (test, 100000)) 14 p1.start() 15 p1.join() 16 17 print(test.get()) 18 19###出力 20#n=10のとき 21#完了 22#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 23 24#n = 100000のとき 25#完了 26#
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/21 03:46
2021/11/21 04:27