python-3.x - 类、字符串和 numba
问题描述
几天前,我发布了一个关于 numba 和字符串使用的问题。有人好心地提出了一个解决方案——它有效,但产生的警告多于实际输出。重温我的帖子,我意识到我做的比我应该做的要复杂得多,这样做我隐藏了我猜的实际问题。这次我会尽量让它变得简约。
我正在尝试将字符串列表传递给_init_()
并使其成为该类的属性。我已经尝试了无数次和方法。到目前为止,我得到的最佳方法如下:
from numba import types
from numba.experimental import jitclass
spec = [('S', types.ListType(types.unicode_type)), \
('Scopy', types.ListType(types.unicode_type))]
@jitclass(spec)
class Test(object):
def __init__(self, S):
#self.Scopy = S.copy()
#print(self.Scopy)
return print(S)
A = ["a", "b"]
Test(A)
上面的脚本产生一个输出行(如预期的那样)和(不夸张)十几个警告行。
当我取消注释的前两行时,问题就开始了,这两行__init__()
创建列表的副本作为类属性并打印它。现在发生错误并且没有产生有效的输出。我想知道怎么了。我尝试了几种方法及其组合,但没有任何效果。我怀疑这.copy()
是问题所在,因为如果我将前两行注释掉,脚本就可以工作(但是效果很差)。
Python 3.8.5,numba 0.53.0,Xubuntu 20.04-64。
谢谢你的帮助。
解决方案
不推荐传递 Python 列表。您应该改为传递typed.List。
这段代码:
@nb.experimental.jitclass(spec)
class Test(object):
def __init__(self, S):
self.Scopy = S.copy()
print(self.Scopy)
print(S)
A = nb.typed.List(["a", "b"])
Test(A)
产生:
[a, b]
[a, b]
推荐阅读
- javascript - Javascript:对象中的范围问题
- c# - 使用 Selenium WebDriver 获取项目列表获取带有空白文本的项目
- mysql - 将单独的表加入 woocommerce 产品表,其中第二个表的值可以与 SKU 对齐
- node.js - 如何在 Cpanel 服务器上直接托管 ethereum dapp?
- c# - 如何在 Unity 中将 int 转换为 Keycode?(C#)
- django - Django:如何锁定行以供阅读?
- reactjs - 反应中的图像方向
- objective-c - 如何在 Xcode 中正确添加系统头文件搜索路径
- express - mailgunjs webhook 后转发路由 req.body['attachment-count'] === 1 但没有 url
- r - 在 R 中将 YYYY-MM-DD 转换为 YYYY-YY Qx