Python threading - Noah.org

Python threading

From Noah.org

Jump to: navigation, search

Basic threading example

This is a simple example of threading in Python. You pass it any function and your function is run in a thread loop.

Click to download: thread_looper.py

#!/usr/bin/env python
 
"""This demonstrates running a function in a thread loop. This will call a
given function over and over in an infinite loop. It will optionally sleep
between each call. It will also check a semaphore to see if it should stop.
 
Noah Spurrier
$Id: thread_looper.py 249 2008-05-05 02:16:28Z noah $
"""
 
import time
import threading
 
class ThreadLooper (threading.Thread):
 
    def __init__ (self, sleep_interval, function, args=[], kwargs={}):
 
        threading.Thread.__init__(self)
        self.sleep_interval = sleep_interval
        self.function = function
        self.args = args
        self.kwargs = kwargs
        self.finished = threading.Event()
 
    def stop (self):
 
        self.finished.set()
        self.join()
 
    def run (self):
 
        while not self.finished.isSet():
            self.finished.wait(self.sleep_interval)
            self.function(*self.args, **self.kwargs)
 
def my_function (a, b, c):
 
    print "meaningless arguments as an example:", a, b, c
    print time.asctime()
 
print "This calls my_function() every 1/10th of second for two seconds."
t = ThreadLooper (0.1, my_function, (1,0,-1))
t.start()
# The thread, t, runs while we are asleep.
time.sleep(2)
t.stop()
print "Done!"

Example output:

Calling my_function() in a thread every 1/10th of second for two seconds.
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:33 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:33 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:33 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:33 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:33 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:33 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:33 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:33 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:34 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:34 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:34 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:34 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:34 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:34 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:34 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:34 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:34 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:34 2007
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:35 2007
Done!
meaningless arguments as an example: 1 0 -1
Thu Jun  7 13:34:35 2007
-->