import numba
from typing import List
@numba.njit
def test(a: List[int]) -> int:
return 1
test([i for i in range(2_000_000)])
需要 2 秒并随着列表的大小线性缩放。 用
numba.typed.List
包装输入参数需要更长的时间。 (所有时间都花在了numba.typed.List
通话上。
如果多次调用该函数(而仅定义一次),则计时不会变得更好,即,这不是编译时间的问题。
有没有办法告诉 numba 按原样使用列表?
在我的实际应用中,原始数据来自外部库,无法直接返回 numpy 数组或 numba 列表,只能返回 Python 列表。
我在 16GB RAM 的 4 核 Ubuntu22 笔记本电脑上使用 numba 0.59.1 和 Python 3.12。
你的解释是对的。
指定类型时可以提高速度。例如,您可以使用“@numba.njit”定义列表的类型,也可以使用我更喜欢的 numba.types。
异步任务也可以提供帮助
@njit(parallel=true)