1

I've created a Thread that execute every 60 seconds, just like a Timer or a SetInterval, based on this: Python threading.timer - repeat function every 'n' seconds

It always worked fine on Windows, but now I have to execute this on Linux (Fedora and Ubuntu, for now) and it's just don't work!

I can't wonder why, because it doesn't return any error. And my Shot function works fine out of the Thread.

Here is my code:

class ShotAllTheTime(Thread):
    """
        Thread principal que invoca as operações do Client
    """
    def __init__(self, event, time_between_shots = 60, *args, **kwargs):
        Thread.__init__(self)
        self.finished = event
        self.time_between_shots = time_between_shots
        self.args = args
        self.kwargs = kwargs

    def cancel(self):
        #Termina a thread.
        self.finished.set()

    def run(self):
        while not self.finished.wait(self.time_between_shots):
            Shot()

This is how I call the ShotAllTheTime Thread:

def main()
    stop_shots = Event()
    MyThread = ShotAllTheTime(stop_shots)
    MyThread.start()
    while 1:
        entrada = raw_input("\nEnter 'exit' to exit:")
        if entrada == 'exit':
            stop_shots.set()
            break

    sys.exit()

main()
Community
  • 1
  • 1
Fernando Freitas Alves
  • 3,709
  • 3
  • 26
  • 45

0 Answers0