2015-03-01 19 views

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.

+0

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