私は数秒後にスレッドを停止することができる方法(内部)ターゲット関数の内部からスレッドを停止しますか?
t1 = Thread(target=call_script1, args=())
t2 = Thread(target=call_script2, args=())
t3 = Thread(target=call_script3, args=())
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()
は、メインプログラムは、スレッドが戻るまで待つあります。私は方法があるかどうかを知りたい - 私はスレッドを生成する - t2と言うと、それは関数call_script2を対象とする。関数は完全に実行するのに5秒かかると言います。スレッドを3秒後に返すことができるかどうかを知りたい。
3秒後にスレッドが戻る能力は、call_script2関数内にある必要があります。メインスレッドでstop_event.wait(3)を実行しても動作しないと思います。
call_script2関数は次のようになります。
def InterfaceThread2():
a = 1;
d = 2
i = 1
while i ==1:
#ser = serial.Serial(3, 115200)
if ser.isOpen():
ser.write('\x5A\x03\x02\x00\x02\x07')
a = ser.read(7) #### THIS COMMAND WAITS UNTIL IT RECEIVES DATA FROM MCU
## This usually happens in 100ms in theory. If it is taking like more than 100ms -for safety say I will wait for three seconds and if it did not respond back
## I want to stop the thread and popup an error message.
# Tell the GUI about the Information
wx.CallAfter(pub.sendMessage, "APP_EVENT2", arg1 = a, arg2 = d)
print "hello"
time.sleep(1)
i = i+1
をするかどうか3秒後にスレッドを終了して終了させますか? – FamousJameous
ターゲット関数call_script2 - MCUとのシリアル通信を呼び出します。 MCUは、読まれるように要求されたときに返信するのに100msかかる。 MCUが応答しなかった場合、スレッドを停止します。エラーメッセージをポップアップします。 –
応答は、続行するか終了するかを制御しますか?応答の時から3秒まで何が起こるはずですか?これは 'call_script2'コードを投稿した方が簡単かもしれません。 – FamousJameous