I want to create a thread class in python3. I want to control an infinite loop in one of the class function. I want to start or stop this loop in my main function outside the class. suppose this code:
import threading
from time import sleep
class my_thread(threading.Thread):
    """Thread class with a stop() method. The thread itself has to check
    regularly for the stopped() condition."""
    def __init__(self):
        super(my_thread, self).__init__()
        self._stop_event = threading.Event()
    def stop(self):
        print("stopping the thread")
        self._stop_event.set()
    def stopped(self):
        return(self._stop_event.is_set())
    def run(self):
        print("running the thread")
        print("start function startt()")
        self._stop_event.clear()
        self.startt()
    def startt(self):
        print("it is going to wait forever")
        while not self.stopped():
            #wait forever, this part is going to run again and again
            pass
        print("This line never executes")
if __name__+'__main__':
    thr=my_thread()
    thr.start()
    sleep(5)
    print("stopping the thread")
    thr.stop()
    # I cant start the thread and relative while loop again
    #thr.start()   
    print("Exiting the whole program")
But the problem is I can't start the thread twice, so what I want is to have two function for start and stop my while loop. I dont need to stop the thread but I need to control it. It means I want to call stop() and startt() functions for many times whenever needed in my main routine.
Thanks