global interpreter lock not working as it should

James J. Besemer jb at cascade-sys.com
Thu Aug 1 20:16:52 EDT 2002


brueckd at tbye.com wrote:

> Really? Consider:
>
> import threading, time
> def f():
>   while 1:
>     time.sleep(1)
>
> for i in range(3):
>   threading.Thread(target=f).start()
>
> Now from my Linux cmd line:
>
> > ps -aux | grep python
> dave     16839  0.0  0.7  9272 1868 pts/4    S    11:07   0:00 python
> dave     16840  0.0  0.7  9272 1868 pts/4    S    11:07   0:00 python
> dave     16841  0.0  0.7  9272 1868 pts/4    S    11:07   0:00 python
> dave     16842  0.0  0.7  9272 1868 pts/4    S    11:07   0:00 python
>
> On Linux this is especially easy to see because you basically get one
> process per thread,

Just a nit: I believe on Linux you get one proc table entry
per thread but you don't get entire processes.  Newer
Linux versions support real threads but they each
resemble a process on PS listings.

Discrete procs would mean separate address spaces,
file descriptors (among other things), whereas the
threads all in fact share those per-proc resources.
Threads each have distinct priorities, "wait channel",
runtimes (among other things) which shows in "ps"
listings.

Regards

--jb

--
James J. Besemer  503-280-0838 voice
http://cascade-sys.com  503-280-0375 fax
mailto:jb at cascade-sys.com






More information about the Python-list mailing list