python运行加速的方法是什么
python运行加速的方法是什么
本篇内容主要讲解“python运行加速的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python运行加速的方法是什么”吧!
一、总结
1、使用pypy
2、减少函数化调用
3、减少文件的打开即with的调用,将这一调用放在for循环前面,然后传递至后面需要用到的地方
4、if函数判断条件多的尽量在前面
全面加速(pypy)
二、全面加速(pypy)
将python换为pypy,在纯python代码下,pypy的兼容性就不影响使用了,因为一些纯python的代码常常会用pypy进行一下加速
测试代码,for循环10000000次
start=time.time()foriinrange(10000000):print(i,end="")end=time.time()print(f"耗费时间{end-start}秒>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
pypy的耗时为:
而python耗时为
大致三倍,但是循环越多估计越快,据说有6倍左右
二、减少文件的打开即with的调用
原代码的with在调用函数内,即每次调用函数都要打开并关闭文件,造成大量耗时
defBMES(word,tag):withopen(r"J:PyCharm项目学习进行中NLP教程NLP教程数据集词性标注ature2ner.txt","a+",encoding="utf-8")asf_:iflen(word)==1:"""单字"""f_.write(word+""+f"S-{tag.upper()}"+"")else:"""多字"""forindex,word_inenumerate(word):ifindex==0:f_.write(word_+""+f"B-{tag.upper()}"+"")elif0<index<len(word)-1:f_.write(word_+""+f"M-{tag.upper()}"+"")else:f_.write(word_+""+f"E-{tag.upper()}"+"")#后续在多个if-elif-else中调用
耗时为
tqdm预估时间在15~25个小时左右跳动
将with放在循环前面
如
将with的内容作为f_传递进来
后的耗时为:
测试如下:
importos,warnings,time,tqdmdeftxt(word):withopen("ceshi.txt","a+",encoding="utf-8")asf:iflen(str(word))<=2:word+=100f.write(str(word)+"")elif2<len(str(word))<=4:word+=200f.write(str(word)+"")else:f.write(str(word)+"")if__name__=="__main__":start=time.time()foriintqdm.tqdm(range(100000)):txt(i)end=time.time()print(f"耗费时间{end-start}秒>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
耗时结果为:
将文件的打开即with的调用放在外面
importos,warnings,time,tqdmdeftxt(f,word):iflen(str(word))<=2:word+=100f.write(str(word)+"")elif2<len(str(word))<=4:word+=200f.write(str(word)+"")else:f.write(str(word)+"")if__name__=="__main__":start=time.time()withopen("ceshi.txt","a+",encoding="utf-8")asf:foriintqdm.tqdm(range(100000)):txt(f,i)end=time.time()print(f"耗费时间{end-start}秒>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
耗时为
结论:快了119倍,而实际加速远远大于这个倍数
三、if判断靠前
如:
iftagin["nts","nto","ntc","ntcb","ntcf","ntch","nth","ntu","nt"]:BMES(f_,i2,tag="ORG")eliftagin["nb","nba","nbc","nbp","nf","nm","nmc","nhm","nh"]:BMES(f_,i2,tag="OBJ")eliftagin["nnd","nnt","nn"]:BMES(f_,i2,tag="JOB")eliftagin["nr","nrf"]:BMES(f_,i2,tag="PER")eliftagin["t"]:BMES(f_,i2,tag="TIME")eliftagin["ns","nsf"]:BMES(f_,i2,tag="LOC")else:fori3inlist(i2):f_.write(i3+""+f"O"+"")
满足条件的可以先跳出判断
到此,相信大家对“python运行加速的方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是恰卡编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
推荐阅读
-
python(中无效的十进制怎么解决 python怎么转换进制)
python怎么转换进制?Python执行二进制转换:1.十进制到二进制(bin)首先,让让我们看看如何将十进制转换成二进制。我...
-
python怎么清除完全相同的行(python splte如何分隔有多个相同符号的str)
pythonsplte如何分隔有多个相同符号的str?str你的string内容str_(相同的符号)执行完了以后再在相同符号的...
-
python(编程控制电脑关机 如何控制电脑关机)
如何控制电脑关机?可以在电脑的运行窗口中输入输入公式,给电脑可以设置自动关机。1.按开快捷键winr然后打开运行窗口。2.在运行窗...
-
python中的特殊标识符(python 中 标识符中可以有逗号吗)
python中标识符中可以有逗号吗?在python语言中合法的标识符是字母、数字以及_,所以我合法的标识符中肯定不能有逗号if...
-
python(excel 提取数据写入新表 python导入excel数据找不到工作簿)
python导入excel数据找不到工作簿?我可以导入数据后找不到工作,不是因为他的工作没有被转移。什么软件可提取并合并Exce...
-
python中字典定义的四种方法(python global关键字的用法详解)
pythonglobal关键字的用法详解?global标志实际上是目的是提示python讲解器,说被其修饰的变量是全局变量。这样...
-
python(array用法 python如何对两个数组做差处理)
python如何对两个数组做差处理?Python中的列表中的元素肯定不能真接相加,减。t最佳的位置的是将列表装换成Python中的...
-
python多行注释符号怎么表示
python多行注释符号怎么表示这篇文章主要介绍“python多行...
-
python支持的操作系统是什么
python支持的操作系统是什么这篇文章主要介绍“python支持...
-
python如何判断列表为空
python如何判断列表为空这篇文章主要介绍“python如何判断...