python运行加速的几种方式

 更新时间:2021年07月13日 08:30:48   作者:python__reported  
Python运行的慢是历来被诟病的,本文就来介绍一下python运行加速的几种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、总结

1、使用pypy
2、减少函数化调用
3、减少文件的打开即with的调用,将这一调用放在for循环前面,然后传递至后面需要用到的地方
4、if函数判断条件多的尽量在前面
全面加速(pypy)

二、全面加速(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的调用

原代码的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判断靠前

如:

 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运行加速的几种方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PyCharm的设置方法和第一个Python程序的建立

    PyCharm的设置方法和第一个Python程序的建立

    今天小编就为大家分享一篇PyCharm的设置方法和第一个Python程序的建立,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python3.7实现中控考勤机自动连接

    Python3.7实现中控考勤机自动连接

    这篇文章主要为大家详细介绍了Python3.7实现中控考勤机自动连接,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Python使用matplotlib实现的图像读取、切割裁剪功能示例

    Python使用matplotlib实现的图像读取、切割裁剪功能示例

    这篇文章主要介绍了Python使用matplotlib实现的图像读取、切割裁剪功能,结合实例形式分析了Python基于matplotlib操作图片的加载、读取、坐标控制及裁剪相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • Python远程linux执行命令实现

    Python远程linux执行命令实现

    这篇文章主要介绍了Python远程linux执行命令实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Pycharm安装并配置jupyter notebook的实现

    Pycharm安装并配置jupyter notebook的实现

    这篇文章主要介绍了Pycharm安装并配置jupyter notebook的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Python采集电视剧《开端》弹幕做成词云图

    Python采集电视剧《开端》弹幕做成词云图

    大家好,本篇文章主要讲的是Python采集电视剧《开端》弹幕做成词云图,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Python中DataFrame转列表的最全指南

    Python中DataFrame转列表的最全指南

    在Python数据分析中,Pandas的DataFrame是最常用的数据结构之一,本文将为你详解5种主流DataFrame转换为列表的方法,大家可以根据需求进行选择
    2025-03-03
  • Pytorch学习笔记DCGAN极简入门教程

    Pytorch学习笔记DCGAN极简入门教程

    网上GAN的教程太多了,这边也谈一下自己的理解,本文给大家介绍一下GAN的两部分组成,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • Python中格式化字符串的四种实现

    Python中格式化字符串的四种实现

    这篇文章主要介绍了Python中格式化字符串的四种实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 老生常谈Python进阶之装饰器

    老生常谈Python进阶之装饰器

    下面小编就为大家带来一篇老生常谈Python进阶之装饰器。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05

最新评论