返回顶部
首页 > 资讯 > 后端开发 > Python >如何通过numba模块给Python代码提速
  • 139
分享到

如何通过numba模块给Python代码提速

2023-06-26 05:06:07 139人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章将为大家详细讲解有关如何通过numba模块给python代码提速,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介:numba是Anaconda公司开发的针对Python的开源JIT编译器,用于提

这篇文章将为大家详细讲解有关如何通过numba模块给python代码提速,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

简介:numba是Anaconda公司开发的针对Python开源JIT编译器,用于提供Python版CPU和GPU编程,速度比原生Python快数十倍。numba是第三方库,可以在运行时将Python代码编译为本地机器指令,而不会强制大幅度的改变普通的Python代码,使得在部分场景下执行Python的效率得到飞速的提升。

工作原理对比:

Python文件执行过程

.py文件通过解释器转化为虚拟机可以执行的字节码(.pyc);字节码在虚拟机上执行,得到结果。

字节码是一种只能运行在虚拟机上的文件,默认后缀.pyc,Python生成.pyc之后一般放在内存中继续使用,并不是每次都将.pyc文件保存到磁盘上。

而在JIT(Just-In-Time)技术中,JIT编译器将Python源代码.py直接编译成机器可以执行的机器语言(机器码),就可以直接在CPU等硬件上运行。这样,JIT就跳过了原来的虚拟机,执行速度几乎与用C语言编程速度无差别。

numba是Anaconda公司开发的针对Python的开源JIT编译器。谷歌开源的jax库也是属于jit编译器之一,该模块则主要应用于科学计算和机器学习方向。

安装:如网络限制,请绕道国内镜像豆瓣源,清华源等。pip安装第三方库全攻略:普通安装、安装whl后缀文件、使用国内镜像安装

pip install numba

使用方法:

from numba import jit对函数进行装饰@jit(nopython=True)

注意事项:numba只符合部分场景,特殊场景无法使用。例如机器学习训练数据时,不能简单的进行装饰使用,否则会抛出异常。

如何通过numba模块给Python代码提速

源码

from numba import jitimport datetimedef calc_sum1(loop):    n = 0    for i in range(loop):        for j in range(loop):            n += j    return n@jit(nopython=True)def calc_sum2(loop):    n = 0    for i in range(loop):        for j in range(loop):            n += j    return n@jit(nopython=True)def calc_sum2(loop):    n = 0    for i in range(loop):        for j in range(loop):            n += j    return nif __name__ == '__main__':    print(datetime.datetime.now())    r1 = calc_sum1(10000)    print(r1)    print(datetime.datetime.now())    print("*" * 30)    print(datetime.datetime.now())    r2 = calc_sum2(10000)    print(r2)    print(datetime.datetime.now())

结果对比:原始代码执行需要花费5秒左右,而使用numba装饰后仅需300毫秒左右,提升10倍有余。如果loop设置的参数更长,numba装饰后执行的结果更佳。

如何通过numba模块给Python代码提速

关于“如何通过numba模块给Python代码提速”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 如何通过numba模块给Python代码提速

本文链接: https://lsjlt.com/news/306999.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何通过numba模块给Python代码提速
    这篇文章将为大家详细讲解有关如何通过numba模块给Python代码提速,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介:numba是Anaconda公司开发的针对Python的开源JIT编译器,用于提...
    99+
    2023-06-26
  • 通过numba模块给Python代码提速的方法详解
    简介:numba是Anaconda公司开发的针对Python的开源JIT编译器,用于提供Python版CPU和GPU编程,速度比原生Python快数十倍。numba是第三方库,可以在...
    99+
    2024-04-02
  • 如何使用JS给通用模块写法
    这篇文章主要为大家展示了“如何使用JS给通用模块写法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用JS给通用模块写法”这篇文章吧。模块化这个问题并非一开...
    99+
    2024-04-02
  • three.js中如何通过模块导入
    这篇文章主要为大家展示了“three.js中如何通过模块导入”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“three.js中如何通过模块导入”这篇文章吧。前言通...
    99+
    2024-04-02
  • 如何给Python的MySQL模块加功能
    使用Python操作MySQL数据库的时候常使用MySQLdb这个模块。   今天在开发的过程发现MySQLdb.connect有些参数没法设置。通过这个页面我们可以看到在connect的时候,可以设置的option和client_fla...
    99+
    2023-01-31
    模块 功能 Python
  • Vuex 模块化与 TypeScript:提高代码质量和开发速度
    ...
    99+
    2024-04-02
  • 如何通过代码审查提高 PHP 函数性能?
    代码审查是提升 php 函数性能的关键步骤,通过检查代码寻找复杂性、优化数据库查询、避免内存泄漏、优化缩容时间以及利用缓存等措施,可以有效提高应用程序效率。以 get_products(...
    99+
    2024-04-24
    php 代码审查 mysql
  • 如何将测试代码从一个模块导入到另一个模块而不将其暴露给生产代码?
    php小编柚子在软件开发中,我们经常需要对代码进行测试。但是,我们不希望将测试代码暴露给生产环境,以免引起不必要的混乱。那么,如何将测试代码从一个模块导入到另一个模块而不将其暴露给生产...
    99+
    2024-02-09
  • Python中logging日志模块代码调试过程详解
    目录一、日志层级二、创建模块三、使用日志的优点大家好,为了进行调试和错误跟踪,人们在整个代码库中广泛使用日志,今天来看看如何在代码中定义日志,并探讨日志的权限。 一、日志层级 在开始...
    99+
    2023-05-18
    Python logging日志模块 Python 日志模块代码调试
  • 如何通过PHP8的Consistent Type Errors提高代码健壮性?
    如何通过PHP8的Consistent Type Errors提高代码健壮性?摘要:PHP8引入了一种新的功能,称为Consistent Type Errors,它能够在编译时检测和显示类型错误。本文将介绍如何使用Consistent Ty...
    99+
    2023-10-22
    PHP 代码健壮性 Consistent Type Errors
  • 如何通过CakePHP内置模块发送邮件
    这篇文章主要介绍了如何通过CakePHP内置模块发送邮件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。通过CakePHP内置模块发送邮件(Gmail)效果通过事先配置模块,来...
    99+
    2023-06-15
  • nginx如何通过PHP代理给图片加水印
    本篇内容主要讲解“nginx如何通过PHP代理给图片加水印”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nginx如何通过PHP代理给图片加水印”吧!nginx 配置代理location&nbs...
    99+
    2023-07-02
  • 如何发布Python代码给pip install
    本篇内容主要讲解“如何发布Python代码给pip install”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何发布Python代码给pip install”吧!先要打一个 Python 包...
    99+
    2023-06-16
  • 如何通过JavaScript实现组件化和模块化
    今天小编给大家分享的是如何通过JavaScript实现组件化和模块化,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。组件化和模块化为什么会有组件化和模块化?当我们的项目复杂度不断上升,...
    99+
    2023-07-06
  • python如何使用typing模块加强代码的可读性
    这篇文章主要为大家展示了“python如何使用typing模块加强代码的可读性”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何使用typing模块加强代码的可读性”这篇文章吧。一、...
    99+
    2023-06-22
  • 如何快速编写Python代码
    本篇内容主要讲解“如何快速编写Python代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何快速编写Python代码”吧!1."二维列表"...
    99+
    2024-04-02
  • 如何用Cython加速Python代码
    今天就跟大家聊聊有关如何用Cython加速Python代码,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。如果你曾经用Python编写过代码,那么等待某些代码块执行的时间可能比您希望的...
    99+
    2023-06-02
  • python实现skywalking的trace模块过滤和报警(实例代码)
      skywalking本身的报警功能,用起来视乎不是特别好用,目前想实现对skywalking的trace中的错误接口进行过滤并报警通知管理员和开发。所以自己就用python对sk...
    99+
    2024-04-02
  • php unicode编码如何通过c++给转化成汉字
    在C++编程中,有时候需要将PHP Unicode编码转换成汉字,具体的实现方法可以通过以下步骤进行:确定编码格式在PHP代码中,Unicode编码通常以\u开头,后面跟随四个十六进制数字,如\u4e2d表示汉字“中”。在C++中,需要先将...
    99+
    2023-05-14
  • 如何在Python中进行模块间的通信
    如何在Python中进行模块间的通信在Python中,模块间的通信是非常常见的需求。模块间的通信可以帮助我们实现功能的拆分和解耦,使代码处理更加清晰和灵活。本文将介绍几种常见的在Python中进行模块间通信的方法,并给出具体的代码示例。全局...
    99+
    2023-10-22
    Python模块间通信 模块间数据交互 Python通信机制
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作