I am new to python programming. I am trying to make a GUI with stoppable threads. I borrowed some code from https://stackoverflow.com/a/325528
class MyThread(threading.Thread):
    """Thread class with a stop() method. The thread itself has to check
    regularly for the stopped() condition."""
    def __init__(self, *args, **kwargs):
        super(MyThread, self).__init__(*args, **kwargs)
        self._stop = threading.Event()
    def stop(self):
        self._stop.set()
    def stopped(self):
        return self._stop.isSet()
I have function which creates a thread for another function in another class that runs an infinite loop.
class MyClass :
    def clicked_practice(self):
        self.practicethread = MyThread(target=self.infinite_loop_method)
        self.practicethread.start()
    def infinite_loop_method()
        while True :
            // Do something
    #This doesn't seem to work and I am still stuck in the loop
    def infinite_stop(self)
        if self.practicethread.isAlive():
        self.practicethread.stop()
I want to create a method to stop this thread . What's happening here?
I think you missed the 'The thread itself has to check regularly for the stopped() condition' bit of that documentation.
Your thread needs to run like this:
while not self.stopped():
    # do stuff
rather than while true. Note that it is still only going to exit at the 'start' of a loop, when it checks the condition. If whatever is in that loop is long-running, that may cause unexpected delays. 
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With