告诉循环线程停止循环的正确方法是什么?
我有一个相当简单的程序,它在一个单独的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()