您的位置:首页 >Numba jitclass 如何声明 Enum 与自定义类?
发布于2025-09-30 阅读(0)
扫一扫,手机访问

Numba 旨在通过即时 (JIT) 编译将 Python 代码转换为机器码,从而提高性能。@jitclass 装饰器允许用户定义可以被 Numba 编译的类,但正确声明类的属性类型至关重要。特别是在使用枚举 (Enum) 类型时,需要采用特定的方法才能使其与 Numba 兼容。
Numba 无法直接处理标准的 Python enum.Enum 类型。为了在 @jitclass 的 spec 中使用枚举,需要使用 enum.IntEnum。IntEnum 是 Enum 的一个子类,它继承了 int 类型,因此可以转换为 int64,这使得它与 Numba 兼容。
示例代码:
from enum import IntEnum
from numba import int64, string
from numba.experimental import jitclass
class Color(IntEnum):
RED = 1
BLUE = 2
GREEN = 3
spec = [('name', string), ('color', int64)]
@jitclass(spec)
class Paint:
def __init__(self, name, color):
self.name = name
self.color = color
# 示例用法
paint = Paint("MyPaint", Color.RED)
print(paint.name)
print(paint.color)代码解释:
通过继承 enum.IntEnum 并在 @jitclass 的 spec 中将枚举类型声明为 int64,可以有效地在 Numba 中使用枚举类型。这种方法允许 Numba 正确编译包含枚举类型的类,从而提高代码的性能。
虽然目前 Numba 还不支持直接声明自定义类在jitclass的spec中,但对于枚举类型,enum.IntEnum 提供了一个简单有效的解决方案。
上一篇:PHP源码编译安装教程详解
下一篇:云视听小电视弹幕开启方法详解
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9