[英]Python end thread when function it's called from ends and pass up exception from thread
我有以下代碼,我在后台定期運行檢查 5 何時被隨機 int 生成器擊中。
我遇到困難的地方是:
當它命中時:當它命中 5 時傳遞來自運行 random_error 的線程的異常,這樣它就可以被 test() 函數捕獲並且 test() 結束。
當它沒有命中時:運行 random_error 的線程停止嘗試並在 test() 結束時結束。
from time import sleep
import threading
import random
def random_error():
while True:
sleep(1)
x = random.randint(1,30)
print(x)
if x == 5:
raise ValueError("5 Hit")
def test():
try:
countdown_thread = threading.Thread(target = random_error)
countdown_thread.start()
y = 0
while True:
sleep(1)
print('still going')
y += 1
if y == 10:
print('didnt hit in time')
break
except:
print("Error caught!")
test()
random_error
是與test
完全不同的線程。 沒有辦法只傳遞錯誤。
也就是說,您仍然有很多選擇。 test
可以查看countdown_thread.is_alive()
是否。 您可以讓random_thread
在拋出異常之前執行一些操作,例如設置一個變量或將一個值放入隊列中,並為此定期進行test
檢查。
但是test
不可能得到另一個線程拋出的異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.