问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

看到几个给 python 做加速的方案

发布网友 发布时间:2022-04-07 11:55

我来回答

2个回答

懂视网 时间:2022-04-07 16:16

这次就说一种简单的方式来加速python计算速度的方法,就是使用numba库来进行,numba库可以使用JIT技术即时编译,达到高性能,另外也可以使用cuda GPU的计算能力来加速,对python来说是一个提速非常好的工具库,使用简单,但是安装稍微复杂一些。

安装完成numba就可以使用了。(推荐学习:Python视频教程)

下面写一个小案例来看一下加速后的程序和加速前的程序的区别,借用官网上最经典的例子:

#!/usr/bin/env python
# coding=utf-8
from numba import jit
from numpy import arange
import time

@jit
def sum2d(arr):
 M, N = arr.shape
 result = 0.0
 for i in range(M):
 for j in range(N):
  result += arr[i,j]
 return result

a = arange(9).reshape(3,3)
start_time = time.time()
for i in range(10000000):
 sum2d(a)
end_time = time.time()
print (end_time - start_time)

这里使用numpy生成三行三列的矩阵,[[0,1,2],[3,4,5],[6,7,8]]然后做二维累加计算,值显然应该是36,这里做了10000000次这样的计算,使用@jit注解可以直接的使用numba jit技术实时编译,从而提高速度,最终运行时间大约是3.86s,如果去掉注解的话那么运行时间大约是25.45s从这里可以看出来大约有6.6倍的性能提升,所以使用numba加速python程序确实是方便简单

更多Python相关技术文章,请访问Python教程栏目进行学习!

热心网友 时间:2022-04-07 13:24

python 性能加速的方法:
选择一个正确的数据结构。
这个说法深有体会。Python中多变的数据结构可以造成很大的差异,使用一个set就可以事半功倍。甚至一个自己定义的数据结构,对于内存,运算速度,处理方式等都有很大的影响。
进行排序
我在项目中也遇到过,几百万的数据URL需要进行鉴别,哪些数据抓取了哪些没有,抓取的部分还有重复。使用if x in y这种格式,则需要o(m*n)的时间复杂度。而两边都对URL进行排序后,则可以使用两个指针轻松搞定。
字符串组合
编写大字符串的时候,不建议使用加号拼接字符串。使用join,%s(py3中使用format方法)等官方的方法效果更好。
循环的使用
如果使用for循环进行简单而大量的操作,不妨试试map()函数,或者python2.0中就已经有的list方法直接生成。或者使用迭代器进行循环的操作。
避免使用点方法
如上,需要使用list.append()方法的时候,这些方法都是需要在每次调用的时候重新确定(原文reevaluated)的,所以可以提前代替,如re.compile()方法。
使用局部变量
可以将一些代码函数化,从而将变量转为局部变量,Python获取局部变量比使用全局变量要快得多。
初始化字典元素
字典的当前使用新技巧包括:使用keyError来定位没有的key,使用get()方法来返回键对应的值。字典中还有collections模块中较多的:defaultdict,OrderedDict类等。
首先在头部写明 import 声明
大量的import会影响Python的性能。虽然随处可以import, 但最好在代码的头部集中写明。
数据的聚合
一次将多个数据聚合起来传递给函数比多次调用函数的开销要小得多。
减少执行语句的数量
Python中有一个定期检查线程是否该运行的函数。这个函数的大量调用会影响性能。最好我们可以设置这个值为较大的数,或者使用少的执行语句而以空间换时间。
Python不是C
移位不一定比加法快。Python是一个高级语言,调用底层不一定快。
使用profile来分析函数的性能
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
iOS 16.1.1值得更新升级吗 ios16.1.1正式版建议更新吗 iOS 16.1.1修复了哪些问题 ios16.1.1值得更新吗?ios 16.1.1新增内容及更新建议 iPhone 12升级iOS 16.1.1之后好用吗 iOS 16.1.1更新内容介绍 iOS 16.1正式版新增了哪些新功能?iOS 16.1正式版值得升级吗? ios 16.1正式版解决了哪些问题和BUG ...森先生是他“最好的老师” 你喜欢这样的老师吗? ... 你喜欢怀特森这样老师吗?说说你的看法.250字 猫眼妆怎么画 本田踏板车哪个型号性价比高 男朋友说"我怎么知道"然后给了两个撇嘴的表情是什么意思? qq里的撇嘴表情什么意思,一个女生知道一个男生喜欢她,对他发撇嘴这个表情说明什么? 我跟我喜欢的男生说我发烧了,他发了个撇嘴的表情。是什么意思呢? 我说冷静一下,也给他一些空间,可男友给我发了一个撇嘴表情,这是什么意思呢? 如果一个人给你发了一个撇嘴是什么意思。 唱歌的时候,我说我回家了,一个男生给我发撇嘴表情,是什么意思? 女人说:我们恋爱呀 哈哈 男人回复:三个撇嘴表情 这是什么意思? 问男友喜欢我多少,他只回了个撇嘴的表情,是什么意思? 男人发撇嘴是什么意思 男发撇嘴是什么意思? 男人发撇嘴的表情代表什么意思? 在Access作业中,在做了许多窗体后要建立查询须改变数据类型(原为备注)咋改呢 在Access作业中,在做了许多窗体后要建立查询须改变数据类型(原为备注)咋改呢 怎么在ACCESS里将字段设置为有重复索引的? 怎么在ACCESS里将字段设置为有重复索引的? 在Access表的设计视图中,不能对 进行修改。 A. 数据表视图中的字体 B... 在access中索引属性怎么选择?索引再access中是什么意思? ACCESS数据库计算机试题求答案!数据库、数据库管理系统和数据库系统三者之间的关系是? 猫眼妆画法步骤,猫眼妆教程,猫眼妆怎么画 如何画猫眼妆 小编带来猫眼妆画法步骤详解 qq群聊等级,昵称前面的小星星⭐️没有了怎么设置。就是图片这个。 猫眼妆怎么画,猫眼妆的画法,怎么画猫眼妆 狐媚猫眼妆的画法 妃子狐媚是什么生肖 令人震撼的意思是什么? 震撼是什么意思,并造句 如何让眼睛变大变性感~ 震撼什么意思是什么 如何画猫眼妆 有照片可以搜索到她抖音号吗? 如何画猫眼妆呢?画猫眼妆的步骤是什么? 震撼的意思,诠释的意思,生死攸关的意思,每个20字就行了 日系猫眼妆怎么化 雷电雨风吼叫着震撼着这句话中震撼的意思是什么? 运输调配系统开发的主要作用是什么? 我和男朋友昨晚分手了,我早晨做梦梦见他把情侣头像换了,QQ名也改了 可是我醒来,一看手机,他没换 运输调配系统的优势是什么? 公交智能调度系统 我的迅雷看看老是出现调运系统播放器错误和一个错误代码是怎么回事