Python Threading

Bryan Olson fakeaddress at nowhere.org
Fri Sep 22 09:15:35 EDT 2006


Calvin Spealman wrote:
> I repeat this all the time, but the best advice I can give you about
> using threads is to not use threads at all.

Might as well get with the times and ignore that advice.

> I would point you to good
> references like Threads Considered Harmful
> (http://www.kuro5hin.org/story/2002/11/18/22112/860)

Note that it's "poster boy" for multiple processes
now uses multiple threads.

> and The Problem
> with Threads 
> (http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.html
> - With Link to PDF).

The author's alternatives to threads are not available
in Python. Many Pythoners do similar things with threads,
such as use the message-passing style via the queue module.

> It might seem an inappropriate response to your
> question to simply tell you that you should not do what you are asking
> how to do, but its just the case that most often anyone without
> exposure to threads has little or no understanding on just how bad
> they are for many of the tasks they will be used for. Threads are
> difficult to control, impossible to predict, and simply one of the
> most over used, least understood causes of buggy, unmaintainable
> software in the whole spectrum of development techniques.

Threads require some study and understanding, but they work
great once one learns to use them.

> As alternatives, look into what tasks can spawn into other processes,

Unfortunately one cannot share Python objects between processes.
POSH may change that, but it looks to be stuck in alpha.

> asyncronous programming (a'la Twisted -
> http://www.twistedmatrix.com/),

I find asynchronous programming much harder to manage than
threads, except for fairly simple applications where neither
one is hard.

> and co-routine and similar facilities,
> such as the tasklets of Stackless and two-way generators now included
> with Python.

Those fail at simple things such as having two of them each
waiting at a blocking call.


-- 
--Bryan



More information about the Python-list mailing list