[Tutor] The thread module
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'
>>> def f2():
... while 1:
... print 'f2'
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()
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
>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