[Python-Dev] Find out whether PyEval_InitThreads has been called?
Gustavo J. A. M. Carneiro
gjc at inescporto.pt
Mon Aug 16 12:43:09 CEST 2004
A Seg, 2004-08-16 às 11:35, Gustavo J. A. M. Carneiro escreveu:
> Short version:
>
> Can I add a variable to python to indicate whether PyEval_InitThreads
> has been called? Something like:
>
> extern int PyEval_ThreadsInitialized;
>
> Motivation:
>
> I have discovered that, in pygtk, performance decreases a lot (50-90%
> higher exectution time) when we use python locking. We have an internal
> boolean flag in pygtk to indicate whether pygtk threading was enabled or
> not, thus avoiding the GIL locking functions in single threaded
> programs.
>
> The problem is that this flag is local to pygtk. If another module
> activates threading in python, we would like to know it in order to
> start acquiring the GIL.
>
> This should be a very simple patch, with zero impact in python core,
> but it will help tremendously. Is likely to be accepted for python 2.4?
Forget it. Why not go one step further and make all locking
operations in python no-ops if PyEval_InitThreads has never been
called? Currently, we risk python crashing if we call such functions
without calling PyEval_InitThreads. This is also trivial to implement.
Regards.
--
Gustavo J. A. M. Carneiro
<gjc at inescporto.pt> <gustavo at users.sourceforge.net>
The universe is always one step beyond logic
More information about the Python-Dev
mailing list