您好,登錄后才能下訂單哦!
本篇內容主要講解“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="") end = time.time() print(f"耗費時間{end-start}秒>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
pypy的耗時為:
而python耗時為
大致三倍,但是循環越多估計越快,據說有6倍左右
原代碼的with在調用函數內,即每次調用函數都要打開并關閉文件,造成大量耗時
def BMES(word,tag): with open(r"J:PyCharm項目學習進行中NLP教程NLP教程數據集詞性標注 ature2ner.txt","a+",encoding="utf-8")as f_: if len(word) == 1: """單字""" f_.write(word + " " + f"S-{tag.upper()}" + " ") else: """多字""" for index, word_ in enumerate(word): if index == 0: f_.write(word_ + " " + f"B-{tag.upper()}" + " ") elif 0 < 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_傳遞進來
后的耗時為:
測試如下:
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)+" ") elif 2<len(str(word))<=4: word+=200 f.write(str(word)+" ") else: f.write(str(word) + " ") 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)+" ") elif 2<len(str(word))<=4: word+=200 f.write(str(word)+" ") else: f.write(str(word) + " ") 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" + " ")
滿足條件的可以先跳出判斷
到此,相信大家對“python運行加速的方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。