Numba使用总结

Numba使用总结Numbaisajust in timecompiler andloops Numba 是 Python 的即时编译器 在使用 NumPy 数组和函数以及循环的代码上效果最佳 就是让你代码运行速度更快注意点 numba 在进行第一次编译时需要一定时间 后续操作对入参同一种类型时 直接读取缓存的编译运行 会非常快 所以在测试性能时注意测试方

Numba使用总结

Numba is a just-in-time compiler for Python that works best on code that uses NumPy arrays and functions, and loops.

Numba特点: 

  • Numba是Python的即时编译器,在使用NumPy数组和函数以及循环的代码上效果最佳。就是让你代码运行速度更快;
  • 能让python代码达到C语言的速度;
  • 支持在多个CPU内核上并行计算;
  • 支持 英伟达和 AMD 显卡计算;

注意点:

  • numba在进行第一次编译时需要一定时间,后续操作 对入参同一种类型时,直接读取缓存的编译运行,会非常快! 所以在测试性能时 注意测试方式;
  • 对于循环数较少的情况 和 一般的 numpy代码 优化效果不明显;
  • numba可以通过简单的装饰器实现编译功能;  被编译的函数内部 不能调用其他函数,如果非要调用,则 其他函数也要 加上 numba的编译装饰器;

 

如下简单示例:

import time from numba import jit @jit(nopython=True, cache=True) def other_func(): return 1 @jit(nopython=True, cache=True) def go_fast(a): x = 0 for item in range(int(a)): x += item other_func() return x if __name__ == '__main__': # 程序第一次 编译运行,速度有些慢 one = time.time() print(go_fast(50000)) print(time.time() - one) # 0.04248 # 程序 对 函数相同类型的入参 直接读取缓存中的编辑 运行,速度非常快 one = time.time() print(go_fast()) print(time.time() - one) # 1.25e-06 

 

易错注意:

  • 在 被 numba的 jit装饰的 函数 内部 如果要调用其他函数,则其他函数也应该 被 jit装饰,否则报错如下: 

 

相关链接:

https://numba.pydata.org/

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211309.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午10:44
下一篇 2026年3月18日 下午10:44


相关推荐

  • PyCharm 2021.12.13 激活 破解_在线激活

    (PyCharm 2021.12.13 激活 破解)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html0BXA05X8YC-eyJsaWNlbnNlSW…

    2022年3月30日
    58
  • MYSQL分库分表总结

    MYSQL分库分表总结单库单表 nbsp 单库单表是最常见的数据库设计 例如 有一张用户 user 表放在数据库 db 中 所有的用户都可以在 db 库中的 user 表中查到 nbsp 单库多表 nbsp 随着用户数量的增加 user 表的数据量会越来越大 当数据量达到一定程度的时候对 user 表的查询会渐渐的变慢 从而影响整个 DB 的性能 如果使用 mysql 还有一个更严重的问题是 当需要添加一列的时候 mysql 会锁表 期间所有

    2026年3月17日
    2
  • Java优先队列(PriorityQueue)

    Java优先队列(PriorityQueue)参考 http www importnew com 6932 htmlhttps www cnblogs com gnivor p 4841191 html 我们知道队列是遵循先进先出 First In First Out 模式的 但有些时候需要在队列中基于优先级处理对象 举个例子 比方说我们有一个每日交易时段生成股票报告的应用程序 需要处理大量数据并且花费很多处理时间 客户向这个应用程

    2026年3月18日
    2
  • 如何成为一名优秀的工程师(语义篇)

    如何成为一名优秀的工程师(语义篇)

    2021年11月6日
    32
  • OpenClaw入门到进阶指南:2026年OpenClaw部署+4种Skills安装法+百炼API及避坑指南

    OpenClaw入门到进阶指南:2026年OpenClaw部署+4种Skills安装法+百炼API及避坑指南

    2026年3月13日
    3
  • mybatis批量删除报错

    mybatis批量删除报错2 mybatis 批量删除出错 1 Mybatis 报错 Parameter notfound Availablepar array 这个错误一般是出现在批量删除传数组的时候 出现的错误先上代码 deleteid deleteBatch deletefromme infowhereidi deleteid deleteBatch

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号