gpt4 book ai didi

python - 从 numba 使用 jitclass 时如何返回字符串?

转载 作者:行者123 更新时间:2023-12-01 02:23:52 37 4
gpt4 key购买 nike

当我调用使用 jitclass 的类中的函数时,我尝试返回一个字符串,但收到错误:

numba.errors.InternalError: Failed at nopython (nopython mode backend)
cannot convert native const('Something') to Python object
[1] During: resolving callee type: BoundFunction((<class 'numba.types.misc.ClassInstanceType'>, 'get_Names') for instance.jitclass.myclass#3f2d488<A:float64,B:float64>)
[2] During: typing of call at <string> (3)

我正在使用此代码来测试该功能:

from numba import jitclass
from numba import boolean, int32, float64,uint8

spec = [('A' ,float64),
('B' ,float64)]

@jitclass(spec)
class myclass:

def __init__(self,):
self.A = 3.25
self.B = 22.5

def get_Names(self):
return "Something"



mC = myclass()
print(mC.get_Names())

有人知道我如何返回字符串吗?

最佳答案

您可以通过使用字节数组来表示字符串来解决此问题,如下所示。

也就是说,我认为这非常丑陋/难以维护。假设它适合这个问题,我认为你最好使用带有 jit 函数的普通 python 类来根据需要加速,或者使用像 cython 这样的东西,它有更丰富的支持扩展类型。

from numba import jitclass, float64

SOMETHING = np.frombuffer(b"Something", dtype='uint8')

spec = [('A' ,float64),
('B' ,float64)]

def get_jitclass_str(val):
return bytes(val).decode('utf-8')

@jitclass(spec)
class myclass:

def __init__(self,):
self.A = 3.25
self.B = 22.5

def get_Names(self):
return SOMETHING

使用

In [16]: mc = myclass()

In [17]: get_jitclass_str(mc.get_Names())
Out[17]: 'Something'

关于python - 从 numba 使用 jitclass 时如何返回字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47635040/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com