[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
<gustavo at users.sourceforge.net>
The universe is always one step beyond logic



More information about the Python-Dev mailing list

Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant