simple Thread question
Dave Brueck
dave at pythonapocrypha.com
Tue Aug 3 16:24:15 EDT 2004
Christopher T King wrote:
> On 3 Aug 2004, adeger wrote:
>
>
>>Having trouble with my first forays into threads. Basically, the
>>threads don't seem to be working in parallel (or you might say are
>>blocking). I've boiled my problems to the following short code block
>>and ensuing output. Seems like the output should be all interleaved
>>and of course it's not. Running Python 2.2 from ActiveState on
>>Windows XP (also doesn't work on Windows 2000).
>
> The Python interpreter isn't too thread-friendly. Because it's not
> re-entrant, it has to make use of a Global Interpreter Lock in order to
> keep internal structures from getting mangled. This lock only allows one
> thread to access the interpreter at a time, and switches threads every
> hundred or so bytecodes. The likely cause of your problem is that your
> loops don't reach this switching threshold -- try using xrange(100) or
> higher.
Er... you're jumping the gun a bit - no need to scare the OP away from
threads with all these details about the GIL when the problem was simply
that the threads were never started.
[snip]
> Because of the former property, another thing you can try is
> inserting a time.sleep(.1) inside of each loop
Uh, did you read his code before responding? (hint: he's already doing
that) :)
-Dave
More information about the Python-list
mailing list