Simple example of threading

rmeegan at murlmail.com rmeegan at murlmail.com
Thu Feb 24 10:12:35 EST 2000


[Thomas Weholt]
> >
> >I want to use threading in a server-based search/index application. 
Any 
> >hints? The Python-docs didn`t help much. Tutorials, examples and 
code, 
> >pleez.

[Aahz]
> 
> Unfortunately, using threading in a server gets a bit more complex and
> may not buy you very much.  If you really want a threaded server, I
> suggest looking at Zope and Zserver -- they've already done all the 
hard 
> work.

There is something to be said for spawning new processes to handle 
server requests. In particular, parent processes can kill their 
children when they wander off and start misbehaving. Threads can't be 
killed by other threads, including the main thread of the process that 
spawned them. 

The cost (in milliseconds) of spawning a process in Linux is on the 
same order as that for spawning a new thread. This means that only the 
most time sensitive environments need worry about the extra overhead. 

Another advantage to spawning a seperate process depends on the nature 
of your code and your system. If you are creating a long-running server 
that uses a number of C extensions, there is the opportunity for memory 
leaks. Spawning a seperate process to handle all of the dirty work 
means that everything gets cleaned up at the end of the request. This 
is one of the reasons that Apache spwns and kills httpd processes to 
handle requests. 

As always, your mileage may vary. The best way to find out is to write 
a single threaded application first. This will give you a baseline for 
performance. If your request rate is low or the time required to 
process a request is short, you may not need anything else. If you find 
that you do, use your now thoroughly debugged code as a starting point 
and add either threading or process forking and see what happens. 

Good luck -
- Robert





More information about the Python-list mailing list