在 Numba 优化的 Python 中将类对象作为函数参数传递

2023-12-14

我想将一个类对象传递给一个函数。 我可以让它工作,但我想知道是否有一种类型可以分配它? 我有一个“最小”的例子来说明我正在尝试做的事情。

spec = [("a", float64),("b",float64)]
@jitclass(spec)
class SOMETHING_3():
    def __init__(self):
        self.a = 1.1
        self.b = 2.3

    def sum(self):
        return self.a + self.b


@jit(float64(float64, XXX), nopython = True)
def get_sum_3(c, someobj):
    d = 0
    for i in range(1000):
        for j in range(1000):
            d += c + someobj.sum()
    return d   

如果我删除显式类型分配“float64(float64, XXX)”,它就可以正常工作。

但是我可以用什么东西来替换 XXX 来告诉它是我传递的类对象吗?


如果你更换了XXX with SOMETHING_3.class_type.instance_type您给出的代码应该可以工作。

值得注意的是,如果您尝试接受 jitclass 对象数组,那么这会变得更加棘手(我相信目前这是不可能的)。如果您的完整问题/代码涉及这些 jitclass 对象的数组,我建议您考虑使用 NumPy 结构化数组而不是 jitclass 来执行此操作。这主要是因为当前版本的 Numba 似乎不支持使用 jitclass 对象数组作为函数参数。原因是 jitclass 对象的数组将被解释为 dtype 为的 NumPy 数组numpy.object,这不是 Numba 的 nopython 模式中受支持的数据类型。由于它是 Numba 无法降低的类型(编译以在 nopython 模式下使用),因此 nopython 模式对于惰性编译(无函数签名)和急切编译(指定函数签名)都将失败。

UPDATE:

现在支持 jitclass 对象列表,但是在 Python 和 nopython 编译代码之间传递它们会产生很大的开销(截至编写本文时),因此请记住这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Numba 优化的 Python 中将类对象作为函数参数传递 的相关文章

随机推荐

  • 以二进制模式打开输入文件流时设置的skipws标志

    我知道不应在以二进制模式打开的输入流上使用提取运算符 但成员函数read应该使用 std ifstream ifs file bin std ios in std ios binary char c ifs gt gt c Should n
  • 与以分号作为单行运行相比,逐行运行会产生奇怪的结果

    我正在尝试创建一个简单的单行 Powershell 命令 该命令将列出给定进程名称的所有 TCP 和 UDP 端口 如果我一行一行地运行这些行 它会产生预期的输出 如果我将所有四行代码放入一行 并使用分号分隔各行 则会产生不同的结果 请参阅
  • 调整 div 元素的大小

    jQuery 有resize 事件 但它只适用于窗口 jQuery window resize function What ever 这很好用 但是当我想将事件添加到 div 元素时它不起作用 E g jQuery div resize f
  • 使用Javascript或HTML,如何获取div或其他元素的高度和宽度?

    我已经尝试了一段时间 获取 网页上 div 的高度和宽度 我尝试了很多事情 其中 一些是 document getElementById header getHeight height height pixelHeight 以及所有其他 明
  • 是否可以通过firebase云消息传递中断级别(iOS)?

    尝试使用 FCM 发送推送通知POST https fcm googleapis com fcm send 是一种发送方式interruption level to aps在推送通知上 根据HTTP API 规范您可以通过以下方式提供 AP
  • LWP::UserAgent 不是线程安全的吗?

    我正在使用以下子例程运行 40 个左右的线程 my app shift my ua LWP UserAgent gt new ua gt timeout 5 my response ua gt get app watch url my ne
  • 获取 List 中不同值的列表

    在 C 中 假设我有一个名为Note具有三个字符串成员变量 public class Note public string Title public string Author public string Text 我有一个类型列表Note
  • 如何使 zsh 在 mac 10.9 上使用 python 2.7.6 而不是 Apple 预装的 2.7.5

    如何使 Mac 上的 zsh 使用 usr local bin python 中的 python 2 7 6 而不是 usr bin python 中的 python 2 7 5 无需在我要运行的脚本之前输入 usr local bin p
  • Windows 程序:如何监听命令行参数?

    我正在尝试对基于商业 Windows 的 IDE 的构建系统进行逆向工程 以便我可以使用 make 来构建我的项目 启动一个程序来执行任务 我需要知道在运行该程序时将哪些命令行参数传递给该程序 但是 Windows 进程查看器不显示命令行参
  • T-SQL 将单词拆分为字符

    我到处搜索 但在任何地方都找不到这个实现 假设我有一句话 QWERTY 我想获得这张表 Q W E R T Y Or for QWERTY AnotherWord我想获得 Q W E R T Y space character here A
  • 是什么原因导致“请求在等待太长时间而无法尝试满足您的请求后被中止”?

    是什么原因导致 请求在等待太长时间而无法尝试满足您的请求后被中止 这似乎是某种内部超时的结果 但我不知道这是在哪里配置的 我们当前正在使用自动缩放 该错误是由于任务队列中的任务数量临时增加而导致的 自动缩放不应该创建更多实例来处理该请求吗
  • 如何捕获两个标签之间的字符串

    我正在编写一个小书签以增强我的工作流程 我的部分工作是获取要放入电子邮件中的正确信息 我喜欢 JavaScript 和 jQuery 所以我正在研究一种使用这个库让我的工作更轻松的方法 我的目标是一个具有特别奇怪标记的网站 我需要捕获匹配的
  • 从 valueEventListener java 返回值

    我试图返回一个布尔值 但返回的值始终为 false 即本例中的 0 检查变量是一个实例变量 按下按钮时将调用以下函数 private boolean checkAnswerSubmission DatabaseReference answe
  • DAX、PowerBI 中的 RANKX() 问题

    我正在学习 DAX 并对 PowerBI 中的 RANKX 感到困惑 这是我的数据 这是我的措施 Rank RANKX ALL RankDemo Sub Category CALCULATE SUM RankDemo My Value 这是
  • 在类中调用 self 有什么作用?

    我注意到 Pytorch Lightning 的文档中提到 您可以通过调用从同一个类中的另一个方法调用前向方法self x 我无法找到任何有关其工作原理的信息 我一直以为你会使用调用该方法self forward 显然 它调用了forwar
  • 如何获取sql server 2005中两个日期之间的月份数

    我的 sql server 2005 表中有一个列应该保存员工的工作月数 由于我还有员工的聘用日期 因此我希望 months In Service 列成为计算列 现在如果我使用DATEDIFF month DateEngaged GETDA
  • 类模板参数推导不适用于别名模板

    考虑下面粘贴的代码 我定义了一个非常简单的类 编译器为其生成隐式推导指南 因此可以在没有显式模板参数的情况下构造它 然而 模板参数推导does not用于从简单的别名模板构造对象 该模板仅直接转发到目标类 template lt typen
  • 处理 php 中的新行

    我有 html 表单 用户可以将文本放入文本区域 我将文本区域的内容保存到MySQL数据库中 在TEXT类型的字段中 然后我在应用程序中的某个位置需要加载该文本并将其放入数组中 其中每个索引将是文本的一行
  • 如何在 CommandButton 单击时隐藏 p:panel

    我想实现这里写的东西 如何在命令按钮单击上隐藏和显示 p panel但看来 hide 不再可用 正确的做法是什么 I tried toggle 但它并没有隐藏它 我真的需要一些吗panelVisibile支持 bean 的属性和使用visi
  • 在 Numba 优化的 Python 中将类对象作为函数参数传递

    我想将一个类对象传递给一个函数 我可以让它工作 但我想知道是否有一种类型可以分配它 我有一个 最小 的例子来说明我正在尝试做的事情 spec a float64 b float64 jitclass spec class SOMETHING