python运行加速有什么方法?效果如何?
Admin 2021-09-14 群英技术资讯 1982 次浏览
python运行加速有什么方法?对于Python运行的慢问题这里就不多说,下面主要给大家来分享一下python运行加速的几种方式,有需要的朋友可以参考,接下来我们一起看看吧。
1、使用pypy
2、减少函数化调用
3、减少文件的打开即with的调用,将这一调用放在for循环前面,然后传递至后面需要用到的地方
4、if函数判断条件多的尽量在前面
全面加速(pypy)
将python换为pypy,在纯python代码下,pypy的兼容性就不影响使用了,因为一些纯python的代码常常会用pypy进行一下加速
测试代码,for循环10000000次
start = time.time()
for i in range(10000000):
print(i,end="\r")
end = time.time()
print(f"耗费时间{end-start}秒>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
pypy的耗时为:

而python耗时为

大致三倍,但是循环越多估计越快,据说有6倍左右
原代码的with在调用函数内,即每次调用函数都要打开并关闭文件,造成大量耗时
def BMES(word,tag):
with open(r"J:\PyCharm项目\学习进行中\NLP教程\NLP教程\数据集\词性标注\nature2ner.txt","a+",encoding="utf-8")as f_:
if len(word) == 1:
"""单字"""
f_.write(word + " " + f"S-{tag.upper()}" + "\n")
else:
"""多字"""
for index, word_ in enumerate(word):
if index == 0:
f_.write(word_ + " " + f"B-{tag.upper()}" + "\n")
elif 0 < index < len(word) - 1:
f_.write(word_ + " " + f"M-{tag.upper()}" + "\n")
else:
f_.write(word_ + " " + f"E-{tag.upper()}" + "\n")
#后续在多个if-elif-else中调用
耗时为

tqdm预估时间在15~25个小时左右跳动
将with放在循环前面
如

将with的内容作为f_传递进来

后的耗时为:

测试如下:
import os, warnings,time,tqdm
def txt(word):
with open("ceshi.txt","a+",encoding="utf-8")as f:
if len(str(word))<=2:
word+=100
f.write(str(word)+"\n")
elif 2<len(str(word))<=4:
word+=200
f.write(str(word)+"\n")
else:
f.write(str(word) + "\n")
if __name__=="__main__":
start = time.time()
for i in tqdm.tqdm(range(100000)):
txt(i)
end = time.time()
print(f"耗费时间{end-start}秒>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
耗时结果为:

将文件的打开即with的调用放在外面
import os, warnings,time,tqdm
def txt(f,word):
if len(str(word))<=2:
word+=100
f.write(str(word)+"\n")
elif 2<len(str(word))<=4:
word+=200
f.write(str(word)+"\n")
else:
f.write(str(word) + "\n")
if __name__=="__main__":
start = time.time()
with open("ceshi.txt", "a+", encoding="utf-8")as f:
for i in tqdm.tqdm(range(100000)):
txt(f,i)
end = time.time()
print(f"耗费时间{end-start}秒>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
耗时为

结论:快了119倍,而实际加速远远大于这个倍数
如:
if tag in ["nts", "nto", "ntc", "ntcb", "ntcf", "ntch", "nth", "ntu", "nt"]:
BMES(f_,i2, tag="ORG")
elif tag in ["nb", "nba", "nbc", "nbp", "nf", "nm", "nmc", "nhm", "nh"]:
BMES(f_,i2, tag="OBJ")
elif tag in ["nnd", "nnt", "nn"]:
BMES(f_,i2, tag="JOB")
elif tag in ["nr", "nrf"]:
BMES(f_,i2, tag="PER")
elif tag in ["t"]:
BMES(f_,i2, tag="TIME")
elif tag in ["ns", "nsf"]:
BMES(f_,i2, tag="LOC")
else:
for i3 in list(i2):
f_.write(i3 + " " + f"O" + "\n")
满足条件的可以先跳出判断
关于python运行加速的方法就介绍到这,有需要的朋友可以参考上述几种方法,希望大家阅读完这篇能收获,想要了解更多python运行加速的内容,大家可以关注群英网络其它相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了深度解析Django REST Framework批量操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要为大家详细介绍了Pyqt实现简易计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在Python中,字符串是最常用的数据类型。引号('或')可用于创建字符串。
求最大公约数是习题中比较常见的类型,本文小编将给大家提供五种比较常见的算法,都是用Python语言实现的,感兴趣的小伙伴可以了解一下
pytho多张图片的无损拼接的实现是怎样的?下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008