如何告诉一个循环线程停止循环是合适的方式?
我有一个相当简单的程序,在一个独立的threading.Thread
类中对指定的主机进行ping测试。在这个类中,它休眠60秒,再次运行直到应用程序退出。
我想在我的wx.Frame
中实现一个“停止”按钮,以请求循环线程停止。它不需要立即结束线程,只需在下一次唤醒时停止循环即可。
这是我的threading
类(请注意:我尚未实现循环,但它可能落在PingAssets的run方法下)
class PingAssets(threading.Thread):
def __init__(self, threadNum, asset, window):
threading.Thread.__init__(self)
self.threadNum = threadNum
self.window = window
self.asset = asset
def run(self):
config = controller.getConfig()
fmt = config['timefmt']
start_time = datetime.now().strftime(fmt)
try:
if onlinecheck.check_status(self.asset):
status = "online"
else:
status = "offline"
except socket.gaierror:
status = "an invalid asset tag."
msg =("{}: {} is {}. \n".format(start_time, self.asset, status))
wx.CallAfter(self.window.Logger, msg)
在我的 wxPython 框架中,我有一个从“开始”按钮调用的函数:
并且在我的wxPyhton框架中,我有一个从“开始”按钮调用的函数:
def CheckAsset(self, asset):
self.count += 1
thread = PingAssets(self.count, asset, self)
self.threads.append(thread)
thread.start()
wait
。 - Genaritothreading.currentThread
是threading.current_thread
的一个已弃用的别名。详见 https://docs.python.org/3.10/library/threading.html#threading.current_thread。 - Filip Müller