GIL cpu multi core usage problem
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Tue Jun 10 21:52:31 EDT 2008
En Mon, 09 Jun 2008 15:26:09 -0300, Pau Freixes <pfreixes at gmail.com>
escribió:
> Surly this is a recurring theme into python dev world, but I need your
> help
> for confirm if the follow image it's really
>
> http://www.milnou.net/~pfreixes/img/cpu_usage_gil_problem.png<http://www.milnou.net/%7Epfreixes/img/cpu_usage_gil_problem.png>
>
> I'm writing a brief article for my blog and I need to make sure about the
> current problem with GIL and multi core environments, this picture try to
> explain with images the problem for scheduling multiple threads running
> python code of same interpreter into multiple cpu cores. Can anyone
> confirm
> to me this picture ?
Yes, if both threads are executing pure Python code, they can't run
simultaneously.
Note that:
- C extensions (usually) release the GIL when they don't call into any
Python code
- The interpreter also releases the GIL before any I/O operation
If the process is I/O bound then the GIL is not so important, and if it's
CPU bound you may benefit from reimplementing the critical parts in C (by
example, using NumPy for a number-crunching process). Another alternative
is to use multiple processes with some form of IPC instead of multiple
threads.
These are the usual arguments against "fear of GIL". You should consider
your specific application to see if the GIL is actually a problem in your
case or not.
--
Gabriel Genellina
More information about the Python-list
mailing list