2015-03-01 14 views

Odpowiedz

3

Ponieważ czasami jest to coś więcej niż zwykły alias dla malloc(). Czasami jest to alias dla _PyMem_DebugMalloc() i istnieje globalna rachunkowość, która pozwala śledzić unikalne obiekty pamięci. Nie ma sensu wypuszczać GIL'a tylko dla połączenia PyMem_Malloc(), więc prawdopodobnie robisz coś bardziej skomplikowanego w C. Jeśli tak jest, możesz po prostu zadzwonić pod numer malloc() i nie dostać żadnej z rzeczy do debugowania.

+0

Od wersji 3.4 Pythona jest również 'PyMem_RawMalloc()', który nie wymaga trzymania GIL (patrz [PEP 445] (https://www.python.org/dev/peps/pep-0445/)). – Kai