日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

幾個(gè)方法幫你加快Python運(yùn)行速度

系統(tǒng) 1919 0

Python運(yùn)行的慢是歷來被詬病的,一方面和語言有關(guān),另一方面可能就是你代碼的問題。語言方面的問題我們解決不了,所以只能在編程技巧上來提高程序的運(yùn)行效率。下面就給大家分享幾個(gè)提高運(yùn)行效率的編程方法。

首先,我們需要來衡量代碼的時(shí)間和空間的復(fù)雜性,不然僅僅用我們的肉眼很難感受代碼時(shí)間長短的變化。python中的profiler可以幫助我們測量程序的時(shí)間和空間復(fù)雜度。 使用時(shí)通過-o參數(shù)傳入可選輸出文件以保留性能日志。具體使用方法如下:

python -m cProfile [-o output_file] my_python_file.py

01 使用哈希表的數(shù)據(jù)結(jié)構(gòu)

如果在程序中遇到大量搜索操作時(shí),并且數(shù)據(jù)中沒有重復(fù)項(xiàng),則可以使用查找而不是循環(huán)。舉例如下:

幾個(gè)方法幫你加快Python運(yùn)行速度_第1張圖片

可以改寫為

幾個(gè)方法幫你加快Python運(yùn)行速度_第2張圖片

02 矢量化取代循環(huán)

盡量使用基于C構(gòu)建的Python庫,例如Numpy,Scipy和Pandas,并且利用矢量化同時(shí)處理來取代程序中編寫多次處理數(shù)組單個(gè)元素的循環(huán),循環(huán)可能是程序優(yōu)化最容易被拿來開刀的地方了。舉例如下:在對(duì)數(shù)組中每個(gè)元素求平方時(shí)直接用數(shù)組相乘,而不是兩個(gè)for循環(huán)。

03 精簡代碼行數(shù)

在編程時(shí),盡量使用一些python的內(nèi)置函數(shù)來精簡代碼行數(shù),是代碼顯得簡潔凝練,大大提高代碼運(yùn)行效率。舉例如下:

幾個(gè)方法幫你加快Python運(yùn)行速度_第3張圖片

可以改寫為

04 使用多進(jìn)程

一般計(jì)算機(jī)都是多進(jìn)程的,那么在執(zhí)行操作時(shí)可以使用Python中的multiproccessing。多進(jìn)程可在代碼中實(shí)現(xiàn)并行化。 當(dāng)您要實(shí)例化新進(jìn)程,訪問共享內(nèi)存時(shí),多進(jìn)程成本很高,因此如果有大量數(shù)據(jù)處理時(shí)可以考慮使用多進(jìn)程。 對(duì)于少量數(shù)據(jù),則不提倡使用多進(jìn)程。舉例如下:

幾個(gè)方法幫你加快Python運(yùn)行速度_第4張圖片

可以改寫為

幾個(gè)方法幫你加快Python運(yùn)行速度_第5張圖片

05 使用Cpython

Cython是一個(gè)靜態(tài)編譯器,可以為您優(yōu)化代碼。加載cypthonmagic擴(kuò)展并使用cython標(biāo)記使用cython編譯代碼。

Cpython的安裝:

pip install Cython

Cpython的使用:

06 盡量使用csv替代xlsx

在進(jìn)行數(shù)據(jù)處理時(shí), 我需要更長的時(shí)間才能將數(shù)據(jù)加載到excel文件或從excel文件保存數(shù)據(jù)。 相反,我選擇了創(chuàng)建多個(gè)csv文件的路徑,并創(chuàng)建了一個(gè)文件夾來對(duì)文件進(jìn)行分組。舉例如下:

幾個(gè)方法幫你加快Python運(yùn)行速度_第6張圖片

可以改寫為

幾個(gè)方法幫你加快Python運(yùn)行速度_第7張圖片

07 使用Numba

它是一個(gè)JIT(即時(shí))編譯器。 通過裝飾器,Numba將帶注釋的Python和NumPy代碼編譯為LLVM 。將您的功能分為兩部分:

1.執(zhí)行計(jì)算的函數(shù) - 使用@autojit進(jìn)行裝飾

2.執(zhí)行IO的功能

幾個(gè)方法幫你加快Python運(yùn)行速度_第8張圖片

08 使用Dask來并行化Pandas DataFrame

Dask很棒! 它幫助我處理數(shù)據(jù)框中的數(shù)值函數(shù)和并行的numpy。 我甚至試圖在集群上擴(kuò)展它,它就是這么簡單!

幾個(gè)方法幫你加快Python運(yùn)行速度_第9張圖片

09 使用Pandarallel庫

Pandarallel可以將pandas操作與多個(gè)進(jìn)程并行化同樣,僅在您擁有大型數(shù)據(jù)集時(shí)使用。

幾個(gè)方法幫你加快Python運(yùn)行速度_第10張圖片

總結(jié)

對(duì)于提高Python的性能,第一是先編寫簡潔,高效的代碼。 我們必須確保代碼不會(huì)在循環(huán)中反復(fù)執(zhí)行相同的計(jì)算。第二不要為集合中的每個(gè)記錄打開/關(guān)閉IO連接。第三要確保在不需要時(shí)不創(chuàng)建新的對(duì)象實(shí)例。通過大量的編程練習(xí),掌握一些高級(jí)的編程方法對(duì)你十分重要。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 安宁市| 库车县| 陈巴尔虎旗| 新宾| 桓台县| 洛浦县| 玉树县| 昌都县| 惠安县| 伊川县| 密云县| 南溪县| 扎赉特旗| 台北县| 泰和县| 藁城市| 樟树市| 河源市| 栾城县| 乐平市| 萨嘎县| 阜阳市| 清水县| 句容市| 易门县| 邢台市| 遂溪县| 伊宁县| 敦化市| 嘉兴市| 镇赉县| 家居| 河间市| 侯马市| 阿瓦提县| 百色市| 上饶市| 泗阳县| 钟祥市| 当阳市| 阿拉善右旗|