Please help with Threading

Carlos Nepomuceno carlosnepomuceno at outlook.com
Mon May 20 03:53:24 EDT 2013


----------------------------------------
> Date: Mon, 20 May 2013 17:45:14 +1000
> From: cs at zip.com.au
> To: fabiosantosart at gmail.com
> Subject: Re: Please help with Threading
> CC: python-list at python.org; wlfraed at ix.netcom.com
>
> On 20May2013 07:25, Fábio Santos <fabiosantosart at gmail.com> wrote:
> | On 18 May 2013 20:33, "Dennis Lee Bieber" <wlfraed at ix.netcom.com> wrote:
> |> Python threads work fine if the threads either rely on intelligent
> |> DLLs for number crunching (instead of doing nested Python loops to
> |> process a numeric array you pass it to something like NumPy which
> |> releases the GIL while crunching a copy of the array) or they do lots of
> |> I/O and have to wait for I/O devices (while one thread is waiting for
> |> the write/read operation to complete, another thread can do some number
> |> crunching).
> |
> | Has nobody thought of a context manager to allow a part of your code to
> | free up the GIL? I think the GIL is not inherently bad, but if it poses a
> | problem at times, there should be a way to get it out of your... Way.
>
> The GIL makes individual python operations thread safe by never
> running two at once. This makes the implementation of the operations
> simpler, faster and safer. It is probably totally infeasible to
> write meaningful python code inside your suggested context
> manager that didn't rely on the GIL; if the GIL were not held the
> code would be unsafe.

I just got my hands dirty trying to synchronize Python prints from many threads.
Sometimes they mess up when printing the newlines. 

I tried several approaches using threading.Lock and Condition. None of them worked perfectly and all of them made the code sluggish. 

Is there a 100% sure method to make print thread safe? Can it be fast???


> It is easy for a C extension to release the GIL, and then to do
> meaningful work until it needs to return to python land. Most C
> extensions will do that around non-trivial sections, and anything
> that may stall in the OS.
>
> So your use case for the context manager doesn't fit well.
> --
> Cameron Simpson <cs at zip.com.au>
>
> Gentle suggestions being those which are written on rocks of less than 5lbs.
> - Tracy Nelson in comp.lang.c
> --
> http://mail.python.org/mailman/listinfo/python-list 		 	   		  


More information about the Python-list mailing list