[Tutor] The thread module

Kent Johnson kent_johnson at skillsoft.com
Sat Sep 4 20:29:56 CEST 2004


Thinking about threads can twist your brain in knots, but for simple uses 
its pretty easy. The threading module is simpler to use than thread. To 
start a new thread, create a Thread object passing a function to the 
constructor. Then call start() on the object. The thread will run until the 
function you pass it returns, or forever if the function doesn't return.

Here is a simple example of creating two threads that run forever, this is 
similar to what you are trying to do:
 >>> from threading import Thread
 >>> import time

Here are the two callback functions:
 >>> def f1():
...   while 1:
...     print 'f1'
...     time.sleep(1)
 >>> def f2():
...   while 1:
...     print 'f2'
...     time.sleep(3)

Create the two threads and start them. You don't have to do this in one 
line from your program but from the console it is easier...
 >>> Thread(target=f1).start(); Thread(target=f2).start()
 >>> f1

Another way you could write your program is to have one loop that checks to 
see if it is time to run any of the tasks. It could keep a list of 
scheduled tasks and check the list each time it wakes.


At 05:36 PM 9/4/2004 +0200, Bernard Lebel wrote:
>It is my first ever attempt at managing threads. And I must admit that I am
>absolutely lost! I don't know if I'm using the right approach at all for
>what I'm after, so if you have any suggestion, do not hesitate!
>What I'm looking for:
>I launch a command line shell, import a script, and the script runs forever.
>The watches two main things:
>1- The accessibility of two shared locations on the network, so if one of
>them goes down (or both), an email is sent to various people. When one
>server goes down, it is no longer checked. When both server go down, none
>are checked. A check is performed every 5 minutes.
>2- The remaining space on several network volumes, and if one goes under
>5Gb, again, an email is sent. The check is performed no matter what, every
>Currently I have two scripts that do the job very well.
>Now the problem is that I want to consolidate them into one, so I don't have
>two python shell running, but one.
>I figured that using child threads would be a good way to manage this,
>because each thread could manage task. Basically I am looking at doing two
>parallel loops.
>So I've messed a little bit with the thread module, and have read the pdf
>tutorial from Norman Matloff, but I'm still confused about the whole thing.
>Anyone can recommend tutorial or ressources for this? Or even a different
>approach for the problem?
>Thanks in advance
>Tutor maillist  -  Tutor at python.org

More information about the Tutor mailing list