色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

將Python數據處理速度提升2~6倍的簡單方法

DPVg_AI_era ? 來源:未知 ? 作者:李倩 ? 2018-10-08 10:56 ? 次閱讀

CPU核心物盡其用!本文介紹了僅需3行代碼,將Python數據處理速度提升2~6倍的簡單方法。這對大規模數據處理非常有用,一起來看。

Python是所有機器學習的首選編程語言。它易于使用,并擁有許多很棒的庫,可以輕松地處理數據。但是當我們需要處理大量數據時,事情就變得棘手了......

“大數據”這個詞通常指的是數據集,一個數據集里的數據點如果沒有數百萬個,也有數十萬。在這樣的規模上,每個小的計算加起來,而且我們需要在編碼過程的每個步驟保持效率。在考慮機器學習系統的效率時,經常被忽視的一個關鍵步驟就是預處理階段,我們必須對所有數據點進行某種預處理操作。

默認情況下,Python程序使用單個CPU作為單個進程執行。大多數用于機器學習的計算機至少有2個CPU核心。這意味著,對于2個CPU內核的示例,在運行預處理時,50%或更多的計算機處理能力在默認情況下不會做任何事情!當你使用4核( Intel i5)或6核( Intel i7)時,就更浪費了。

但幸運的是,內置的Python庫中有一些隱藏的功能,可以讓我們充分利用所有CPU內核!感謝Python的concurrent.futures模塊,只需3行代碼就可以將一個普通程序轉換為一個可以跨CPU核心并行處理數據的程序。

標準方法

讓我們舉一個簡單的例子,我們在一個文件夾中有一個圖像數據集; 或者我們甚至有成千上萬的圖像!為了節省處理時間,我們在這里使用1000張圖像。我們希望在將所有圖像在傳輸到深度神經網絡之前將其大小調整為600x600。下面就是你經常在GitHub上看到的一些非常標準的Python代碼。

這個程序遵循在數據處理腳本中經常看到的簡單模式:

首先是要處理的文件(或其他數據)列表;

你可以使用for循環逐個處理每個數據片段,然后在每個循環迭代上運行預處理

讓我們在一個包含1000個jpeg文件的文件夾上測試這個程序,看看運行需要多長時間:

在我的具有6個CPU核心的i7-8700k上,這個程序的運行時間是7.9864秒!對于這樣的高端CPU來說,似乎有點慢。讓我們看看我們可以做些什么來加快速度。

快速方式

為了理解我們希望Python如何并行處理事物,直觀地思考并行處理本身是有幫助的。假設我們必須執行相同的任務,例如將釘子釘入一塊木頭,我們的桶中有1000個釘子。如果釘每個釘子需要1秒鐘,那么1個人的話需要花1000秒完成工作。但是如果有4個人,我們會將整桶釘子平均分成4堆,然后每個人處理自己的一堆釘子。這樣,只需250秒即可完成任務!

在這個包含1000張圖像的任務中,也可以這樣處理:

將jpg文件列表分為4個較小的組。

運行Python解釋器的4個獨立實例。

讓每個Python實例處理4個較小數據組中的一個。

結合4個過程的結果,得到最終的結果列表。

這里最重要的部分是Python為我們處理了所有艱苦的工作。我們只是告訴它我們想要運行哪個函數,以及使用多少Python實例,然后它完成了所有其他操作!我們只需修改3行代碼。

上面的代碼中的:

你有多少CPU核心就啟動多少Python進程,在我的例子中是6個。實際的處理代碼是這樣的:

executor.map()將你想要運行的函數和一個列表作為輸入,列表中的每個元素都是函數的單個輸入。由于我們有6個核心,我們將同時處理列表中的6個項!

再次運行程序看看:

運行時間是1.14265秒,幾乎加速了6倍!

注意:產生更多Python進程并在它們之間移動數據時,會產生一些開銷,因此不會總是得到這么大的速度提升。 但總的來說,加速相當顯著。

是否總能大幅加速?

當你有要處理的數據列表并且要對每個數據點執行類似的計算時,使用Python并行池是一個很好的解決方案。但是,它并不總是完美的。并行池處理的數據不會以任何可預測的順序處理。如果你需要處理的結果按特定順序排列,那么這種方法可能不適合。

你處理的數據還必須是Python知道如何“pickle”的類型。幸運的是,這些類型很常見。以下來自Python官方文檔:

None, True, 及 False

整數,浮點數,復數

字符串,字節,字節數組

僅包含可選對象的元組,列表,集合和詞典

在模塊的頂層定義的函數(使用def,而不是lambda)

在模塊頂層定義的內置函數

在模塊頂層定義的類

這些類的實例,__dict__或調用__getstate __()的結果是可選擇的

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據處理
    +關注

    關注

    0

    文章

    606

    瀏覽量

    28597
  • 機器學習
    +關注

    關注

    66

    文章

    8425

    瀏覽量

    132775
  • python
    +關注

    關注

    56

    文章

    4800

    瀏覽量

    84820

原文標題:3行代碼,Python數據預處理提速6倍!

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    格式化數據存儲到char數組的最簡單方法是什么?

    os_printf文本格式化為 UART 輸出的函數。 格式化數據存儲到 char 數組的最簡單方法是什么?
    發表于 07-11 08:01

    基于LabVIEW的數據處理方法

    基于LabVIEW的數據處理方法
    發表于 04-26 17:28

    Python存儲數據詳解

    人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率。2. csv文件Python可以數據存儲為CSV文件格式,我們可以用ex
    發表于 03-29 15:47

    請問連續多包數據數據傳輸速度超過DSP的數據處理速度怎么解決?

    RT目前在做一個項目,可能會出現連續多包數據數據傳輸速度超過DSP的數據處理速度,請問這種情況怎么解決?是否有現成的解決思路可以參考?
    發表于 09-30 08:05

    新庫添加到Petalinux rootfs的最簡單方法是什么

    嗨,新庫添加到Petalinux rootfs的最簡單方法是什么?1>如何預編譯的庫添加到rootfs,這將在petalinux-config -c rootfs中檢測到2>如何
    發表于 05-22 08:32

    如何利用nodemcu及Python數據處理進行wifi的局域網遠程溫度測量呢

    如何利用nodemcu及Python數據處理進行wifi的局域網遠程溫度測量呢?
    發表于 02-15 06:58

    學習PLC的2簡單方法

    學習PLC的2簡單方法 有的初學者在理論上花了很多功夫,結果半年下來還是沒有把PLC搞懂,其實他們只是缺少了一些PLC的實踐經驗,
    發表于 04-02 13:58 ?1634次閱讀

    Python6個必備軟件功能及下載方式詳解

    如果你需要更快的 Python 應用程序,最簡單的實現的方法就是通過 PyPy ,Python 運行時與實時(JIT)編譯器。與使用普通的 Pyth
    的頭像 發表于 12-01 15:48 ?3724次閱讀

    Python數據處理代碼合集免費下載

    本文檔的主要內容詳細介紹的是Python數據處理代碼合集免費下載。
    發表于 09-20 08:00 ?7次下載

    測試IGBT的簡單方法

    一些測試IGBT的簡單方法
    的頭像 發表于 06-19 10:19 ?1.5w次閱讀

    微軟推更快地安裝win10的方法速度提升6

    對于那些想要快速安裝Windows 10的用戶來說,微軟現在給出了更快捷的方法,直接讓速度提升6
    的頭像 發表于 02-19 14:36 ?1585次閱讀
    微軟推更快地安裝win10的<b class='flag-5'>方法</b>,<b class='flag-5'>速度</b><b class='flag-5'>提升</b><b class='flag-5'>6</b><b class='flag-5'>倍</b>

    數據海量數據處理方法總結

    數據海量數據處理方法總結。
    發表于 04-26 09:16 ?13次下載

    LCD屏幕連接到Arduino mega的最簡單方法

    電子發燒友網站提供《LCD屏幕連接到Arduino mega的最簡單方法.zip》資料免費下載
    發表于 10-19 09:49 ?1次下載
    <b class='flag-5'>將</b>LCD屏幕連接到Arduino mega的最<b class='flag-5'>簡單方法</b>

    使用Bolt構建鬧鐘的最簡單方法

    電子發燒友網站提供《使用Bolt構建鬧鐘的最簡單方法.zip》資料免費下載
    發表于 12-09 16:17 ?0次下載
    使用Bolt構建鬧鐘的最<b class='flag-5'>簡單方法</b>

    使用蜂鳴器創建警報的最簡單方法

    電子發燒友網站提供《使用蜂鳴器創建警報的最簡單方法.zip》資料免費下載
    發表于 12-15 11:05 ?0次下載
    使用蜂鳴器創建警報的最<b class='flag-5'>簡單方法</b>
    主站蜘蛛池模板: vr亚洲成年网址在线观看| 最近中文字幕在线中文高清版| 久久精品黄色| 国产精品人妻在线观看| 成人网站国产在线视频内射视频 | 高H黄暴NP辣H一女多男| se01短视频在线观看| 99精品AV无码一区二区| 337p欧洲亚大胆精品| 中文字幕一区久久久久| 中文字幕精品无码一区二区| 在线亚洲精品国产一区麻豆| 在线免费观看国产视频| 与子敌伦刺激对白亂輪亂性| 又粗又大又爽又黄的免费视频| 瑜伽牲交AV| 24小时日本高清免费看| 97精品在线| 本庄优花aⅴ全部在线影片| 抽插H浊水H嫩B父皇| 国产99在线视频| 国产麻豆精品人妻无码A片| 国产在线中文字幕| 久久9精品区-无套内射无码| 久久免费国产视频| 男女做爽爽爽视频免费软件| 欧美日韩精品一区二区三区高清视频 | 纵欲(高H)| 99无码熟妇丰满人妻啪啪 | 欧美亚洲色帝国| 日韩人妻无码精品久久中文字幕| 三级黄在线| 亚洲AV永久无码精品老司机蜜桃| 亚洲乱色视频在线观看| 国产在线aaa片一区二区99| 俄罗斯xxxxxbbbbb| 丰满大爆乳波霸奶| 俄罗斯美女破处| 丰满人妻按磨HD| 国产精品VIDEOS麻豆TUBE| 福利啪啪吧|