【问题标题】:Why do i need the gil for PyMem_Malloc()?为什么我需要 PyMem_Malloc() 的 gil?
【发布时间】:2015-03-01 04:39:55
【问题描述】:

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

【问题讨论】:

    标签: python python-c-api


    【解决方案1】:

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

    【讨论】:

    • 从 Python 3.4 开始,还有 PyMem_RawMalloc() 不需要持有 GIL(请参阅 PEP 445)。
    猜你喜欢
    • 2011-03-26
    • 2019-06-09
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 2017-02-26
    • 2011-04-03
    相关资源
    最近更新 更多