以前質問させていただき回答をいただいたのですが、問題をみつけたため質問させていただきます。
実現したいことと前提
ライブラリABC(名前は仮です)のfuncという関数の返り値を1秒以内の時間制限で取得する関数を作りたいです。
具体的には1秒以内で値が返ってきたらその値を出力。
1秒以内に返ってこなければ関数を停止し別の文字列を出力。
func:文字列を返す,実行時間は一瞬で終わることもあれば無限に終わらないこともある
発生している問題・解決方針
ソースコードで指摘している箇所で止まってしまっています。
原因としてはreturn文の箇所でもう一度ABC.funcを実行しなおしているためだと考えています。
スレッドに渡した関数の実行結果をどうにかして保存して置ければ、それをreturnすればよいので解決すると考えています。
該当のソースコード
python
1import threading 2import ABC#ライブラリの名前に意味はないです 3 4#出力結果は文字列 5def thread_func(): 6 txt="hoge" 7 th=threading.Thread(target=ABC.func()) 8 th.start() 9 th.join(1)#1秒間動かす 10 if not th.is_alive():#ABC.funcが停止していればreturnしたい 11 return ABC.func()#ここで停止してしまいます 12 else: 13 return txt 14 15 16
よろしくお願いいたします!
回答2件
あなたの回答
tips
プレビュー