Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Execute task every so often within a process

Tags:

python

timer

I want to execute a task every 2 hours. Python has a Timer in Threading module, but does it meet my needs? How do I generate a proper Timer myself?

like image 402
pat.inside Avatar asked Nov 11 '10 09:11

pat.inside


1 Answers

If you want your code to be run every 2 hours the easiest way would be using cron or a similar scheduler depending on your operating system

if you want your programm to call a function every n seconds ( 7200 in your case ) you could use a thread and event.wait. The following example starts a timer that is triggered every second and prints a string to stdout

import threading
import time

class TimerClass(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.event = threading.Event()

    def run(self):
        while not self.event.is_set():
            print "do something"
            self.event.wait( 1 )

    def stop(self):
        self.event.set()

tmr = TimerClass()
tmr.start()

time.sleep( 10 )

tmr.stop()
like image 95
Nikolaus Gradwohl Avatar answered Oct 15 '22 01:10

Nikolaus Gradwohl