Come da this discussion, PyMem_Malloc()
richiede GIL; tuttavia, se la funzione non è altro che un alias per malloc()
, a chi importa?Perché ho bisogno del gil per PyMem_Malloc()?
5
A
risposta
3
Perché a volte è più di un semplice alias per malloc()
. A volte è un alias per _PyMem_DebugMalloc()
e vi è una contabilità globale per tenere traccia degli oggetti di memoria univoci. Non c'è alcun punto nel rilasciare GIL solo per una chiamata PyMem_Malloc()
, quindi probabilmente stai facendo qualcosa di più complicato in C. Se questo è il caso, puoi semplicemente chiamare malloc()
e non ottenere nessuna delle informazioni di debug.
A partire da Python 3.4, c'è anche 'PyMem_RawMalloc()' che non richiede il mantenimento di GIL (si veda [PEP 445] (https://www.python.org/dev/peps/pep-0445/)). – Kai