在 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 中将类对象作为函数参数传递 的相关文章

  • 一篇关于利用numba加速python运行效率的笔记

    一篇关于加速python代码运行效率的笔记 一 原始代码 部分 分析二 变量预分配内存实现加速三 numba装饰器实现加速3 1 为什么numba可以对python代码加速 xff1f 3 2 修改代码匹配numba的类型支持 四 其它尝试
  • pip 安装numba报错

    pip 安装numba报错 问题描述 xff1a 本人在一个十分干净的容器里面 xff0c 想pip安装numba库 xff0c 但是该库需要依赖llvmlite这个库 xff0c 然后就它自己安装llvmlite的时候 xff0c 就报错
  • itertools.combinations 的 numba 安全版本?

    我有一些代码循环遍历一大组itertools combinations 这现在是一个性能瓶颈 我正在尝试转向numba s jit nopython True 加快速度 但我遇到了一些问题 首先 numba 似乎无法处理itertools
  • 如何将 Numba 用于 Pytorch 张量?

    我是 Numba 新手 我需要使用 Numba 来加速一些 Pytorch 功能 但我发现即使是一个非常简单的功能也不起作用 import torch import numba numba njit def vec add odd pos
  • numba 渴望编译吗?图案是什么?

    我在 numba 网站上查看了 eager Compilation 但无法弄清楚如何指定类型 他们使用的例子是这样的 from numba import jit int32 jit int32 int32 int32 def f x y A
  • Numba 并行代码比顺序代码慢

    我是 Numba 新手 我正在尝试使用 Numba 版本 0 54 1 在 Python 中实现旧的 Fortran 代码 但是当我添加parallel True程序实际上变慢了 我的程序非常简单 我更改 L x L 网格中的位置 x 和
  • 将 numba 与 np.concatenate 并行使用效率不高?

    我在获取时遇到一些问题np concatenate有效地并行化 这是一个最小的工作示例 我知道在这里我可以总结a and b单独进行 但我专注于并行连接操作 因为这是我在项目中需要做的 然后我将对连接数组进行进一步的操作 例如排序 无论我在
  • 在 Numba 优化的 Python 中将类对象作为函数参数传递

    我想将一个类对象传递给一个函数 我可以让它工作 但我想知道是否有一种类型可以分配它 我有一个 最小 的例子来说明我正在尝试做的事情 spec a float64 b float64 jitclass spec class SOMETHING
  • numba 缓存问题:无法缓存函数/没有可用于文件的定位器

    我正在尝试部署一个具有数字的代码库numba njit函数与cache True 它在本地运行良好 Mac OS X 10 12 3 但在远程计算机 AWS 上的 Ubuntu 14 04 上我收到以下错误 RuntimeError at
  • Python:重写循环 numpy 数学函数以在 GPU 上运行

    有人可以帮我重写这个函数吗 the doTheMath功能 在GPU上进行计算 我花了几天的时间试图解决这个问题 但没有结果 我想知道也许有人可以帮助我以任何你认为适合的方式重写这个函数 因为我最后给出了相同的结果 我尝试使用 jit fr
  • Debian 8 上的 Python numba / llvmlite - 我无法构建 llvmlite

    我尝试在 Debian 8 系统上安装 numba 如下所述 http llvmlite pydata org en latest install index html http llvmlite pydata org en latest
  • numba @jit 比纯 python 慢吗?

    所以我需要改进我一直在处理的脚本的执行时间 我开始使用 numba jit 装饰器来尝试并行计算 但是它让我困惑 KeyError Does not support option parallel 所以我决定测试 nogil 是否解锁了我的
  • 扩展示例以了解 CUDA、Numba、Cupy 等

    大多数在线提供的 Numba CuPy 等示例都是简单的数组添加 显示了从 cpu 单核 线程到 GPU 的加速 并且命令文档大多缺乏好的示例 这篇文章旨在提供一个更全面的示例 提供了初始代码here https eraserpeel wo
  • 如何使用 numba 在 GPU 上推广快速矩阵乘法

    最近 我一直在尝试使用 Numba 库在 Python 中进行 GPU 编程 我一直在他们的网站上使用那里的教程阅读它 目前我陷入了他们的示例 可以在这里找到 https numba pydata org numba doc latest
  • 关闭 Numba 中的列表反射

    我正在尝试使用 Numba 加速我的代码 我传递给函数的参数之一是可变列表列表 当我尝试更改子列表之一时 出现此错误 在 nopython 模式管道中失败 步骤 nopython 模式后端 无法反映反射容器的元素 反射列表 反射列表 int
  • 改善 python numpy 代码的运行时间

    我有一个代码可以将垃圾箱重新分配给一个大的numpy大批 基本上 大型数组的元素已以不同的频率进行采样 最终目标是将整个数组重新组合到固定的容器中freq bins 对于我拥有的数组来说 代码有点慢 有什么好的方法可以提高这段代码的运行时间
  • 在 numba.jit 装饰器中使用并行选项会使函数给出错误的结果

    给定一个矩形的两个对角 x1 y1 and x2 y2 和两个半径r1 and r2 找到位于由半径定义的圆之间的点的比率r1 and r2到矩形中的点数 简单的 NumPy 方法 def func 1 x1 y1 x2 y2 r1 r2
  • 尝试 numba 时出现巨大错误

    我在使用 numba 时遇到了大量错误 讽刺的是 正确的结果是在错误之后打印的 我正在使用最新的 Anaconda python 并安装了 numba conda install numba 一次在 Ubuntu 13 64 位和 anac
  • 使用 Numba 加速矢量距离计算

    以下是我为 3 D 环形几何中的距离 平方 计算编写的一些函数 用于该 3 D 空间中的粒子集合 import itertools import time import numpy as np import scipy import num
  • Numba jitclass 不适用于 python 列表

    我在用python 3 6 and numba 0 36 这个问题有一个sister https stackoverflow com questions 48159360 numba custom stack class and pop f

随机推荐

  • 以二进制模式打开输入文件流时设置的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