一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 幾行代碼讓 Python 函數執行快 30 倍

幾行代碼讓 Python 函數執行快 30 倍

2022-02-12 15:06野客 Python

Python 編程語言,與其他流行編程語言相比主要缺點是它的動態特性和多功能屬性拖慢了速度表現。Python 代碼是在運行時被解釋的,而不是在編譯時被編譯為原生代碼。在本文中,我們將討論如何用多處理模塊并行執行自定義 Pyth

Python 是一種流行的編程語言,也是數據科學社區中最受歡迎的語言。與其他流行編程語言相比,Python 的主要缺點是它的動態特性和多功能屬性拖慢了速度表現。Python 代碼是在運行時被解釋的,而不是在編譯時被編譯為原生代碼。

幾行代碼讓 Python 函數執行快 30 倍

1、Python 多線程處理的基本指南

C 語言的執行速度比 Python 代碼快 10 100 倍。但如果對比開發速度的話,Python 比 C 語言要快。對于數據科學研究來說,開發速度遠比運行時性能更重要。由于存在大量 API、框架和包,Python 更受數據科學家和數據分析師的青睞,只是它在性能優化方面落后太多了。

2、多處理入門

考慮一個單核心 CPU,如果它被同時分配多個任務,就必須不斷地中斷當前執行的任務并切換到下一個任務才能保持所有進程正常運行。對于多核處理器來說,CPU 可以在不同內核中同時執行多個任務,這一概念被稱為并行處理。

3、它為什么如此重要?

數據整理、特征工程和數據探索都是數據科學模型開發管道中的重要元素。在輸入機器學習模型之前,原始數據需要做工程處理。對于較小的數據集來說,執行過程只需幾秒鐘就能完成;但對于較大的數據集而言,這項任務就比較繁重了。

并行處理是提高 Python 程序性能的一種有效方法。Python 有一個多處理模塊,讓我們能夠跨 CPU 的不同內核并行執行程序。

4、實現

我們將使用來自 multiprocessing 模塊的 Pool 類,針對多個輸入值并行執行一個函數。這個概念稱為數據并行性,它是 Pool 類的主要目標。

我將使用從 Kaggle 下載的 Quora 問題對相似性數據 集來演示這個模塊。

上述數據集包含了很多在 Quora 平臺上提出的文本問題。我將在一個 Python 函數上執行多處理模塊,這個函數通過刪除停用詞、刪除 HTML 標簽、刪除標點符號、詞干提取等過程來處理文本數據。

preprocess() 就是執行上述文本處理步驟的函數。

可以在 這里 找到托管在我的 GitHub 上的函數 preprocess() 的代碼片段。
現在,我們使用 multiprocessing 模塊中的 Pool 類為數據集的不同塊并行執行該函數。數據集的每個塊都將并行處理。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import multiprocessing
from functools import partial
from QuoraTextPreprocessing import preprocess
 
BUCKET_SIZE = 50000
 
def run_process(df, start):
    df = df[start:start+BUCKET_SIZE]
    print(start, "to ",start+BUCKET_SIZE)
    temp = df["question"].apply(preprocess)
 
chunks  = [x for x in range(0,df.shape[0], BUCKET_SIZE)]  
pool = multiprocessing.Pool()
func = partial(run_process, df)
temp = pool.map(func,chunks)
pool.close()
pool.join()

該數據集有 537,361 條記錄(文本問題)需要處理。對于 50,000 的桶大小,數據集被分成 11 個較小的數據塊,這些塊可以并行處理以加快程序的執行時間。

5、基準測試

人們常問的問題是使用多處理模塊后執行速度能快多少。我在實現了數據并行性,對整個數據集執行一次 preprocess() 函數后對比了基準執行時間。

運行測試的機器有 64GB 內存和 10 個 CPU 內核。

多處理和單處理執行的基準時間:

幾行代碼讓 Python 函數執行快 30 倍

從上圖中,我們可以觀察到 Python 函數的并行處理將執行速度提高了近 30 倍。

我們可以在我的 GitHub 中找到用于記錄基準測試數據的 Python文件。

基準測試過程:

幾行代碼讓 Python 函數執行快 30 倍

結 論:

在本文中,我們討論了 Python 中多處理模塊的實現,該模塊可用于加速 Python 函數的執行。添加幾行多處理代碼后,具有 537k 實例的數據集的執行時間幾乎快了 30 倍。

處理大型數據集的時候,我建議大家使用并行處理,因為它可以節省大量時間并加快工作流程。

到此這篇關于幾行代碼讓 Python 函數執行快 30 倍的文章就介紹到這了,更多相關Python 函數執行內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://zhuanlan.zhihu.com/p/408371071

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩欧美国产综合精品 | 特级夫妻大片免费在线播放 | 娇喘高潮教室h | 激情亚洲 | 91av爱爱| 国产男女乱淫真视频全程播放 | 亚洲精品福利一区二区在线观看 | 天天综合天天综合 | 亚欧成人一区二区 | 亚洲国产精品一在线观看 | 国产一二区视频 | 色天天综合色天天碰 | 国产香蕉一区二区精品视频 | 99免费精品 | 久久精品国产清白在天天线 | 日韩版码免费福利视频 | 四色6677最新永久网站 | 2012在线观看免费视频大全 | 99这里只有精品66视频 | 操比网| 四虎精品永久在线网址 | 人成网站在线观看 | 国产成人高清精品免费观看 | 天天摸天天碰色综合网 | 四虎影视免费观看 | 日韩不卡一区二区三区 | 亚洲精品国产一区二区三区在 | 亚洲精品黄色 | 精品久久99麻豆蜜桃666 | 91桃花 | 小舞丝袜调教喷水沦为肉奴 | 男女男精品视频网站 | 成人网视频免费播放 | 国产一级片视频 | 男女车车好快的车车免费网站 | 国产一级特黄aa大片在线 | 国产亚洲综合成人91精品 | 午夜久久免影院欧洲 | 和老外3p爽粗大免费视频 | 欧美日韩一区二区三区在线观看 | a天堂在线视频 |