【发布时间】:2015-03-01 04:39:55
【问题描述】:
根据this discussion,PyMem_Malloc() 需要 GIL;但是,如果该函数只不过是 malloc() 的别名,谁在乎呢?
【问题讨论】:
标签: python python-c-api
根据this discussion,PyMem_Malloc() 需要 GIL;但是,如果该函数只不过是 malloc() 的别名,谁在乎呢?
【问题讨论】:
标签: python python-c-api
因为它有时不仅仅是malloc() 的别名。有时它是_PyMem_DebugMalloc() 的别名,并且那里有一些全局记帐来跟踪唯一的内存对象。仅仅为了PyMem_Malloc() 调用而发布 GIL 并没有真正意义,因此您可能在 C 中做一些更复杂的事情。如果是这种情况,您可以简单地调用 malloc() 而不会得到任何调试内容。
【讨论】:
PyMem_RawMalloc() 不需要持有 GIL(请参阅 PEP 445)。