【问题标题】:Where can I find a list of numpy functions which release the GIL?我在哪里可以找到发布 GIL 的 numpy 函数列表?
【发布时间】:2014-07-24 05:38:15
【问题描述】:

我发现了几个 SO 问题以一种或另一种方式询问这个问题,但实际上没有一个给出一个列表或参考一个。

This question 指的是a wiki page,但是虽然 wiki 页面讨论了关于 GIL 和多线程,但它没有给出 GIL 释放函数的列表。

This mailing list post 表示查找的唯一方法是读取 numpy 源。真的吗?

【问题讨论】:

    标签: python numpy gil


    【解决方案1】:

    不能保证抓到所有东西,但我只是跑了:

    git grep nogil
    

    在我的 numpy 存储库的克隆中。它在 2 个文件中出现了 82 个用法:

    • random/mtrand/mtrand.pyx
    • random/mtrand/numpy.pxd

    【讨论】:

    • 释放 GIL 的 C 语言是 Py_BEGIN_ALLOW_THREADS,如果你也想找的话。
    • 这个答案基本上是“阅读源代码”。这真的是唯一的选择吗?
    • Numpy 是一个开源项目...如果您愿意做慈善,您可以将此信息添加到 documentation 并提交拉取请求,因此其他人无需阅读源代码!
    • 其实numpy有自己的释放GIL的宏,定义为here。搜索THREADS 应该涵盖所有情况。
    • @Jaime 请注意,链接到 GitHub 中的代码行意味着当代码更改并且链接中编号的行不再是您最初想要指向的代码时,您的链接将不再有意义。最好在特定提交中链接到代码行,这样它就永远不会改变。
    猜你喜欢
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    相关资源
    最近更新 更多