こちらの記事を元にthreadingで並列処理を行い、その後処理後の戻り値を表示させたいのですが、参考ブログのように行かず、途中で処理が止まってしまいます。
ゆくゆくは2つのスレッド両方から戻り値を受け取りたいと考えています。
どなたか解決法をご存知の方はぜひ教えていただきたいです。
動作環境はpython3.6.3です。
7/17 ソースコードを変更しました。
しかし下記のソースコードを実行しても画像のように最後の1文が表示されずにずっと空白のままです。
どうすれば最後の1文を表示できるでしょうか
実行結果
countcount 00 countcount 1 1 countcount 2 2 countcount 3 3 countcount 4 4
ソースコード
python
1import time 2import threading 3 4def proc(): 5 for i in range(0,5): 6 time.sleep(1) 7 print("count", i) 8 9if __name__ == '__main__': 10 th1 = threading.Thread(target=proc) 11 th2 = threading.Thread(target=proc) 12 13 th1.start() 14 th2.start() 15 16 thread_list = threading.enumerate() 17 thread_list.remove(threading.main_thread()) 18 for thread in thread_list: 19 thread.join() 20 21 print ("All END")
「途中で処理が止まってしまいます」とはどのような状況を指していますか? 掲載されているコードは、手元環境では(返り値は取れてなくてNoneになりますが)最後まで実行されて正常に終了するようです
最後の"countcount 4 4"からずっと動かない状態です。参照元のブログを単純にコピペしてもそこで止まってしまいます。
runfile使っているということは、spyderで実行していますか? コマンドプロンプトからpythonコマンドで実行しても同じ結果になりますかね
回答有り難うございます! コマンドプロンプトから実行した結果きちんと最後まで表示されました。spyder側が対応していないといったことなんですかね? どちらにせよありがとうございました。
動くのはわかったけど、spyderだと駄目な理由がよくわからないですね。どっちでも動くに越したことはないんですけど。調べて情報が出てきたら回答に書きます
お手数おかけします。ありがとうございます。
回答1件
あなたの回答
tips
プレビュー