【问题标题】:Do scipy.sparse functions release the GIL?scipy.sparse 函数会释放 GIL 吗?
【发布时间】:2015-01-11 03:49:48
【问题描述】:

问题

scipy.sparse 函数,如csr._mul_matvec 是否释放 GIL?

上下文

包装外部代码(如 C)的 Python 函数通常在执行期间释放 GIL,从而实现多线程并行。这在numpy 代码库中很常见。在scipy.sparse中也很常见吗?如果是这样,哪些操作会释放 GIL?如果他们不发布 GIL,那么这里是否存在根本问题,为什么不发布或者只是缺乏人力?

【问题讨论】:

  • 我很确定确实如此。在 numpy C 代码中发布 GIL 的宏通常采用 NPY_BEGIN_THREADS_xxx 的形式。在 scipy 的 github 存储库 yields 6 hits 中搜索 NPY_BEGIN_THREADS:ndimage 模块中有 5 个 C 文件,sparse 模块的 sparsetools 子模块中有一个 C++ 文件。

标签: python numpy scipy sparse-matrix gil


【解决方案1】:

它们确实如此,对于 Scipy 版本 >= 0.14.0

【讨论】:

  • 有人否决了这个答案。原因是什么?
  • 可能是因为它非常简洁并且没有提供这一事实的证据。
猜你喜欢
  • 1970-01-01
  • 2013-09-08
  • 2022-11-02
  • 2014-06-15
  • 2011-07-19
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多