为什么我需要 PyMem_Malloc() 的 gil?

Why do i need the gil for PyMem_Malloc()?

根据this discussionPyMem_Malloc()需要GIL;但是,如果该函数只不过是 malloc() 的别名,谁在乎呢?

因为它有时不仅仅是 malloc() 的别名。有时它是 _PyMem_DebugMalloc() 的别名,并且那里有一些全局会计来跟踪唯一的内存对象。仅仅为了 PyMem_Malloc() 调用而释放 GIL 没有实际意义,因此您可能正在用 C 做一些更复杂的事情。如果是这种情况,您可以简单地调用 malloc() 而不会得到任何调试东西。