如何停止线程内的整个代码
How can I stop the whole code inside a thread
我正在使用 selenium 和线程,我有一个函数 check_browser_running
来检查浏览器是否仍然 运行ning:
def check_browser_running()
while True:
try:
driver.title
except WebDriverException:
print("DRIVER WAS CLOSED")
然后我运行这个函数在一个线程中让其他代码运行ning:
th = threading.Thread(target=check_browser_running)
th.start()
最后一件事是,我有一个循环函数来停止 运行ning 中的代码,因为如果我的代码中发生任何错误,我希望代码停止而不是退出:
def stop():
while True:
pass
我想要的是如何通过 运行ning 线程的函数使用 stop()
函数停止来自 运行ning 的代码?因为如果我在线程中调用 stop()
这不会停止主代码。
要么你可以这样做:(推荐)
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)
无论您是否从线程中调用它,这都会终止整个程序。
我正在使用 selenium 和线程,我有一个函数 check_browser_running
来检查浏览器是否仍然 运行ning:
def check_browser_running()
while True:
try:
driver.title
except WebDriverException:
print("DRIVER WAS CLOSED")
然后我运行这个函数在一个线程中让其他代码运行ning:
th = threading.Thread(target=check_browser_running)
th.start()
最后一件事是,我有一个循环函数来停止 运行ning 中的代码,因为如果我的代码中发生任何错误,我希望代码停止而不是退出:
def stop():
while True:
pass
我想要的是如何通过 运行ning 线程的函数使用 stop()
函数停止来自 运行ning 的代码?因为如果我在线程中调用 stop()
这不会停止主代码。
要么你可以这样做:(推荐)
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)
无论您是否从线程中调用它,这都会终止整个程序。