python运行加速的几种方式
目录
- 一、总结
- 二、全面加速(pypy)
- 二、减少文件的打开即with的调用
- 三、if判断靠前
一、总结 1、使用pypy
2、减少函数化调用
3、减少文件的打开即with的调用,将这一调用放在for循环前面,然后传递至后面需要用到的地方
4、if函数判断条件多的尽量在前面
全面加速(pypy)
二、全面加速(pypy) 将python换为pypy,在纯python代码下,pypy的兼容性就不影响使用了,因为一些纯python的代码常常会用pypy进行一下加速
【python运行加速的几种方式】测试代码,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的调用 原代码的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,tqdmdef txt(word):with open("ceshi.txt","a+",encoding="utf-8")as f:if len(str(word))<=2:word+=100f.write(str(word)+"\n")elif 2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
耗时结果为:
文章图片
将文件的打开即with的调用放在外面
import os, warnings,time,tqdmdef txt(f,word):if len(str(word))<=2:word+=100f.write(str(word)+"\n")elif 2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
耗时为
文章图片
结论:快了119倍,而实际加速远远大于这个倍数
三、if判断靠前 如:
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运行加速的几种方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)
- Python|Python 9.20