Jak zatrzymać pętlę wątku w Pythonie?

Jaki jest właściwy sposób powiedzenia pętli wątku, aby przestał zapętlać?

Mam dość prosty program, który pinguje określony host w osobnymthreading.Thread klasa. W tej klasie śpi 60 sekund, uruchamia się ponownie, dopóki aplikacja nie zakończy pracy.

Chciałbym zaimplementować przycisk „Stop” w moimwx.Frame poprosić pętlę o zatrzymanie. Nie musi od razu kończyć nici, może po prostu przestać zapętlać po obudzeniu.

Tutaj jest mójthreading klasa (uwaga: jeszcze nie zaimplementowałem pętli, ale prawdopodobnie padłaby w metodzie uruchamiania w PingAssets)

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)

W mojej ramce wxPyhton mam tę funkcję wywoływaną z przycisku Start:

def CheckAsset(self, asset):
        self.count += 1
        thread = PingAssets(self.count, asset, self)
        self.threads.append(thread)
        thread.start()

questionAnswers(4)

yourAnswerToTheQuestion