告诉循环线程停止循环的正确方法是什么?
我有一个相当简单的程序,可以在单独的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)
在我的wxPyhton框架中,我从“开始”按钮调用了此功能:
def CheckAsset(self, asset):
self.count += 1
thread = PingAssets(self.count, asset, self)
self.threads.append(thread)
thread.start()