我正在使用 selenium 和執行緒,并且我有一個功能check_browser_running來檢查瀏覽器是否仍在運行:
def check_browser_running()
while True:
try:
driver.title
except WebDriverException:
print("DRIVER WAS CLOSED")
然后我在一個執行緒中運行這個函式讓其他代碼運行:
th = threading.Thread(target=check_browser_running)
th.start()
最后一件事是,我有一個回圈函式來阻止代碼運行,因為如果我的代碼中發生任何錯誤,我希望代碼停止而不是退出:
def stop():
while True:
pass
我想要的是如何stop()通過運行執行緒的函式來阻止代碼使用該函式運行?因為如果我呼叫stop()一個執行緒,這不會停止主代碼。
uj5u.com熱心網友回復:
要么你可以做這樣的事情:(推薦)
import threading
running = True
def thread():
global running
while running:
if(some_event):
stop()
def stop():
global running
running = False
th = threading.Thread(target=thread)
th.start()
在使用變數作為標志運行 while 回圈的地方,您可以設定為 false。結束回圈。
或者一個更俗氣的解決方案,你只需獲取 python 程式的 pid 并殺死它。
import os, signal
def stop():
os.kill(os.getpid(), signal.SIGTERM)
無論您是否從執行緒中呼叫它,這都會殺死整個程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/433423.html
