質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1429閲覧

threadingのjoin()の動作について

YMD_kts

総合スコア23

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/07/16 16:51

編集2018/07/17 09:17

こちらの記事を元に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")

実行結果

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2018/07/16 17:03

「途中で処理が止まってしまいます」とはどのような状況を指していますか? 掲載されているコードは、手元環境では(返り値は取れてなくてNoneになりますが)最後まで実行されて正常に終了するようです
YMD_kts

2018/07/16 23:09

最後の"countcount 4 4"からずっと動かない状態です。参照元のブログを単純にコピペしてもそこで止まってしまいます。
hayataka2049

2018/07/17 09:26

runfile使っているということは、spyderで実行していますか? コマンドプロンプトからpythonコマンドで実行しても同じ結果になりますかね
YMD_kts

2018/07/17 10:38

回答有り難うございます!  コマンドプロンプトから実行した結果きちんと最後まで表示されました。spyder側が対応していないといったことなんですかね? どちらにせよありがとうございました。
hayataka2049

2018/07/17 12:01

動くのはわかったけど、spyderだと駄目な理由がよくわからないですね。どっちでも動くに越したことはないんですけど。調べて情報が出てきたら回答に書きます
YMD_kts

2018/07/17 12:07

お手数おかけします。ありがとうございます。
guest

回答1

0

自己解決

この記事を参考にlambdaQueueを使うことで戻り値の取得も解決しました。

投稿2018/07/18 07:22

YMD_kts

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問