首页 > 解决方案 > 如何将“只读”查找表传递给 numpy 以避免 GIL

问题描述

我正在计算一个“相似度函数”,它主要类似于余弦相似度度量,尽管我应用了一些技巧来处理序数值和缺失值。

这些技巧基本上包括从一些动态生成的(尽管“只读”)查找表(基于一些数据分布)中获取一些预先计算的值。

我遇到的问题是,当我将函数转换为numpy's ufuncwithnp.frompyfunc时,函数正在访问“全局”python 对象这一事实使得无法numpy跳过 GIL,因此它无法矢量化/并行化该功能的执行。

有没有办法将预先计算的查找表的“完全所有权”(以避免 GIL)赋予这些“ufunc”(可能传递一个副本)?(考虑到在“编码时”这些值是未知的)。

先感谢您。

标签: pythonnumpygilnumpy-ufunc

解决方案


推荐阅读