7

As per this discussion, PyMem_Malloc() requires the GIL; however, if the function is nothing more than an alias for malloc(), who cares?

Community
  • 1
  • 1
Noob Saibot
  • 4,573
  • 10
  • 36
  • 60

1 Answers1

5

Because it is sometimes more than simply an alias for malloc(). Sometimes it is an alias for _PyMem_DebugMalloc() and there is some global accounting there to keep track of unique memory objects. There's no real point in releasing the GIL just for a PyMem_Malloc() call, so you're probably doing something more complicated in C. If that's the case, you can simply call malloc() and not get any of the debugging stuff.

Nathan Binkert
  • 8,744
  • 1
  • 29
  • 37
  • 1
    As of Python 3.4, there's also `PyMem_RawMalloc()` which doesn't require the GIL to be held (see [PEP 445](https://www.python.org/dev/peps/pep-0445/)). – Kai Jul 03 '17 at 08:03