【发布时间】: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