python - Numba - 如何为可变数量的函数参数声明签名?
问题描述
Numba 似乎支持 jit-ed 函数中可变数量的参数:
@numba.jit(nopython=True)
def func(*arrays):
return np.vstack(arrays)
但是,我想知道为这个函数提供签名的正确语法是什么,以便 numba 知道 tuple 的成员应该使用哪种类型arrays
。我在文档中找不到对此的引用。
解决方案
我不确定您是否应该尝试手动提供类型签名,因为 Numba 能够进行类型推断。引用有关高级类型的 Numba 文档:
警告
此处记录的 API 不保证是稳定的。除非必要,否则建议让 Numba 使用 @jit 的无签名变体来推断参数类型。
为了演示,观察我们可以在 nopython 模式下编译这个函数,Numba 会在使用时建立一个签名列表:
import numba
import numpy as np
@numba.jit(nopython=True)
def func(*arrays):
return np.vstack(arrays)
print("signatures before call", func.nopython_signatures)
arr1 = np.array([1, 2])
arr2 = np.array([3, 4])
arr3 = func(arr1, arr2)
print(arr3)
print("signatures after call", func.nopython_signatures)
结果输出:
signatures before call []
[[1 2]
[3 4]]
signatures after call [(UniTuple(array(int64, 1d, C) x 2),) -> array(int64, 2d, C)]
推荐阅读
- notepad++ - 我如何搜索特定文本然后从搜索行的开头到行尾以替换为“”
- python - 通过 Python 计算快速排序期间对列表的总访问量
- python - 如何从 .wav 文件中找到傅立叶变换系数?
- php - MessageBird 短信未发送(php)
- android - 如何使用 Flutter 动态共享多张图片?
- python - 使用 Biopython 控制术语爆炸
- sql - 如何在 Postgres 中选择 TOP 记录。不是类似的问题
- ionic-framework - 不允许在 ionic 中加载本地资源
- reactjs - 我收到此错误“TypeError:无法解构'object null'的属性'handleShow',因为它为null。” 请帮我解决这个问题
- php - 用于在根目录和子目录提供 Laravel API 的 NGINX 配置