告诉循环线程停止循环的正确方法是什么?
我有一个相当简单的程序,它在一个单独的 threading.Thread
类中 ping 指定的主机。在这个类中,它休眠60秒,然后再次运行,直到应用程序退出。
我想实现一个“停止”按钮在我的 wx.Frame
要求循环线程停止。它不需要立即结束线程,它可以在唤醒后停止循环。
下面是我的 threading
类(注意: 我还没有实现循环,但它可能属于 PingAsset 中的 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 Frame 中,我有一个从 Start 按钮调用的函数:
def CheckAsset(self, asset):
self.count += 1
thread = PingAssets(self.count, asset, self)
self.threads.append(thread)
thread.start()