" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

幾行代碼讓 Python 函數(shù)執(zhí)行快 30 倍

 更新時(shí)間:2022年01月24日 10:30:39   作者:野客  
Python 編程語言,與其他流行編程語言相比主要缺點(diǎn)是它的動(dòng)態(tài)特性和多功能屬性拖慢了速度表現(xiàn)。Python 代碼是在運(yùn)行時(shí)被解釋的,而不是在編譯時(shí)被編譯為原生代碼。在本文中,我們將討論如何用多處理模塊并行執(zhí)行自定義 Python 函數(shù),并進(jìn)一步對(duì)比運(yùn)行時(shí)間指標(biāo)。

Python 是一種流行的編程語言,也是數(shù)據(jù)科學(xué)社區(qū)中最受歡迎的語言。與其他流行編程語言相比,Python 的主要缺點(diǎn)是它的動(dòng)態(tài)特性和多功能屬性拖慢了速度表現(xiàn)。Python 代碼是在運(yùn)行時(shí)被解釋的,而不是在編譯時(shí)被編譯為原生代碼。

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

C 語言的執(zhí)行速度比 Python 代碼快 10 100 倍。但如果對(duì)比開發(fā)速度的話,Python 比 C 語言要快。對(duì)于數(shù)據(jù)科學(xué)研究來說,開發(fā)速度遠(yuǎn)比運(yùn)行時(shí)性能更重要。由于存在大量 API、框架和包,Python 更受數(shù)據(jù)科學(xué)家和數(shù)據(jù)分析師的青睞,只是它在性能優(yōu)化方面落后太多了。

2、多處理入門

考慮一個(gè)單核心 CPU,如果它被同時(shí)分配多個(gè)任務(wù),就必須不斷地中斷當(dāng)前執(zhí)行的任務(wù)并切換到下一個(gè)任務(wù)才能保持所有進(jìn)程正常運(yùn)行。對(duì)于多核處理器來說,CPU 可以在不同內(nèi)核中同時(shí)執(zhí)行多個(gè)任務(wù),這一概念被稱為并行處理。

3、它為什么如此重要?

數(shù)據(jù)整理、特征工程和數(shù)據(jù)探索都是數(shù)據(jù)科學(xué)模型開發(fā)管道中的重要元素。在輸入機(jī)器學(xué)習(xí)模型之前,原始數(shù)據(jù)需要做工程處理。對(duì)于較小的數(shù)據(jù)集來說,執(zhí)行過程只需幾秒鐘就能完成;但對(duì)于較大的數(shù)據(jù)集而言,這項(xiàng)任務(wù)就比較繁重了。

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

4、實(shí)現(xiàn)

我們將使用來自 multiprocessing 模塊的 Pool 類,針對(duì)多個(gè)輸入值并行執(zhí)行一個(gè)函數(shù)。這個(gè)概念稱為數(shù)據(jù)并行性,它是 Pool 類的主要目標(biāo)。

我將使用從 Kaggle 下載的 Quora 問題對(duì)相似性數(shù)據(jù) 集來演示這個(gè)模塊。

上述數(shù)據(jù)集包含了很多在 Quora 平臺(tái)上提出的文本問題。我將在一個(gè) Python 函數(shù)上執(zhí)行多處理模塊,這個(gè)函數(shù)通過刪除停用詞、刪除 HTML 標(biāo)簽、刪除標(biāo)點(diǎn)符號(hào)、詞干提取等過程來處理文本數(shù)據(jù)。

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

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

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()

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

5、基準(zhǔn)測(cè)試

人們常問的問題是使用多處理模塊后執(zhí)行速度能快多少。我在實(shí)現(xiàn)了數(shù)據(jù)并行性,對(duì)整個(gè)數(shù)據(jù)集執(zhí)行一次 preprocess() 函數(shù)后對(duì)比了基準(zhǔn)執(zhí)行時(shí)間。

運(yùn)行測(cè)試的機(jī)器有 64GB 內(nèi)存和 10 個(gè) CPU 內(nèi)核。

多處理和單處理執(zhí)行的基準(zhǔn)時(shí)間:

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

我們可以在我的 GitHub 中找到用于記錄基準(zhǔn)測(cè)試數(shù)據(jù)的 Python文件。

基準(zhǔn)測(cè)試過程:

結(jié) 論:

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

處理大型數(shù)據(jù)集的時(shí)候,我建議大家使用并行處理,因?yàn)樗梢怨?jié)省大量時(shí)間并加快工作流程。

到此這篇關(guān)于幾行代碼讓 Python 函數(shù)執(zhí)行快 30 倍的文章就介紹到這了,更多相關(guān)Python 函數(shù)執(zhí)行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python簡單檢測(cè)文本類型的2種方法【基于文件頭及cchardet庫】

    Python簡單檢測(cè)文本類型的2種方法【基于文件頭及cchardet庫】

    這篇文章主要介紹了Python簡單檢測(cè)文本類型的方法,結(jié)合實(shí)例形式分析了基于基于文件頭及cchardet庫兩種文本類型檢測(cè)的方法,需要的朋友可以參考下
    2016-09-09
  • Django自帶的用戶驗(yàn)證系統(tǒng)實(shí)現(xiàn)

    Django自帶的用戶驗(yàn)證系統(tǒng)實(shí)現(xiàn)

    這篇文章主要介紹了Django自帶的用戶驗(yàn)證系統(tǒng)實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 基于打開pycharm有帶圖片md文件卡死問題的解決

    基于打開pycharm有帶圖片md文件卡死問題的解決

    這篇文章主要介紹了基于打開pycharm有帶圖片md文件卡死問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python?實(shí)現(xiàn)圖片特效處理

    python?實(shí)現(xiàn)圖片特效處理

    這篇文章主要介紹了python?實(shí)現(xiàn)圖片特效處理,對(duì)于??圖片處理?,在日常生活中我們常常能夠看到的,下面我們就來利用Python來對(duì)圖片進(jìn)行特效操作,需要的朋友可以參考一下
    2022-04-04
  • 淺談如何測(cè)試Python代碼

    淺談如何測(cè)試Python代碼

    今天帶大家了解如何用Python測(cè)試代碼,文中有非常詳細(xì)的介紹及代碼示例,對(duì)正在學(xué)習(xí)的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • Python 如何實(shí)現(xiàn)訪問者模式

    Python 如何實(shí)現(xiàn)訪問者模式

    這篇文章主要介紹了Python 如何實(shí)現(xiàn)訪問者模式,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • PyTorch中的Variable變量詳解

    PyTorch中的Variable變量詳解

    今天小編就為大家分享一篇PyTorch中的Variable變量詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python Matplotlib繪制動(dòng)畫的代碼詳解

    Python Matplotlib繪制動(dòng)畫的代碼詳解

    使用matplotlib可以很容易地創(chuàng)建動(dòng)畫框架。在本文中我們就將利用Matplotlib制作幾個(gè)簡單的動(dòng)畫,文中的示例代碼講講詳細(xì),感興趣的可以了解下
    2022-05-05
  • 對(duì)IPython交互模式下的退出方法詳解

    對(duì)IPython交互模式下的退出方法詳解

    今天小編就為大家分享一篇對(duì)IPython交互模式下的退出方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python如何匹配文本并在其上一行追加文本

    Python如何匹配文本并在其上一行追加文本

    這篇文章主要介紹了Python如何匹配文本并在其上一行追加文本,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評(píng)論

康平县| 工布江达县| 辰溪县| 长岛县| 和龙市| 沂水县| 黄陵县| 肇源县| 延庆县| 唐山市| 定边县| 化隆| 南江县| 五指山市| 皋兰县| 黔西| 土默特左旗| 康平县| 油尖旺区| 曲周县| 三亚市| 蒲江县| 喀喇沁旗| 合水县| 定西市| 新泰市| 铅山县| 兴海县| 涡阳县| 麻江县| 东港市| 梅州市| 临泽县| 阿拉善右旗| 马鞍山市| 比如县| 镇江市| 会同县| 略阳县| 长汀县| 湛江市|