Questions about GIL and web services from a n00b

Aahz aahz at
Sat Apr 16 16:44:48 CEST 2011

In article <e6008cc8-50f0-4d78-be78-ec6e73b974e9 at>,
Raymond Hettinger  <python at> wrote:
>Threading is really only an answer if you need to share data between
>threads, if you only have limited scaling needs, and are I/O bound
>rather than CPU bound

Threads are also useful for user interaction (i.e. GUI apps).  

I think that "limited scaling" needs to be defined, too; CherryPy
performs pretty well, and the blocking model does simplify development.

One problem that my company has run into with threading is that it's not
always obvious where you'll hit GIL blocks.  For example, one would
think that pickle.loads() releases the GIL, but it doesn't; you need to
use pickle.load() (and cStringIO if you want to do it in memory).
Aahz (aahz at           <*>

"At Resolver we've found it useful to short-circuit any doubt and just        
refer to comments in code as 'lies'. :-)"
--Michael Foord paraphrases Christian Muirhead on python-dev, 2009-03-22

More information about the Python-list mailing list