最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

僅需三行Python代碼,讓數(shù)據(jù)預(yù)處理速度提高2到6倍!

2021-06-19 22:27 作者:Python學(xué)習(xí)猿  | 我要投稿


我們熟知Python語法簡單、功能強(qiáng)大、可擴(kuò)展性強(qiáng),但是運(yùn)行速度慢是解釋型語言的通病,Python 也不例外。

在 Python 中,我們可以找到原生的并行化運(yùn)算指令。今天給大家分享 3 行代碼,大大加快數(shù)據(jù)預(yù)處理的速度。

在默認(rèn)情況下,Python 程序是單個進(jìn)程,使用單 CPU 核心執(zhí)行

而大多數(shù)硬件都至少搭載了雙核處理器。這意味著如果沒有進(jìn)行優(yōu)化,在數(shù)據(jù)預(yù)處理的時候會出現(xiàn)「一核有難九核圍觀」的情況——超過 50% 的算力都會被浪費(fèi)。

幸運(yùn)的是,Python 庫中內(nèi)建了一些隱藏的特性,可以讓我們充分利用所有 CPU 核心的能力。

通過使用 Python 的?concurrent.futures 模塊,我們只需要 3 行代碼就可以讓一個普通的程序轉(zhuǎn)換成適用于多核處理器并行處理的程序。

一、標(biāo)準(zhǔn)方法

讓我們舉一個簡單的例子,在單個文件夾中有一個圖片數(shù)據(jù)集,其中有數(shù)萬張圖片。

在這里,我們決定使用 1000 張。我們希望在所有圖片被傳遞到深度神經(jīng)網(wǎng)絡(luò)之前將其調(diào)整為 600×600 像素分辨率的形式。

以下是你經(jīng)常會在 GitHub 上看到的標(biāo)準(zhǔn) Python 代碼:

上面的程序遵循你在處理數(shù)據(jù)腳本時經(jīng)??吹降暮唵文J剑?/p>

  1. 首先從需要處理內(nèi)容的文件(或其他數(shù)據(jù))列表開始。

  2. 使用 for 循環(huán)逐個處理每個數(shù)據(jù),然后在每個循環(huán)迭代上運(yùn)行預(yù)處理。

讓我們在一個包含 1000 個 jpeg 文件的文件夾上測試這個程序,看看運(yùn)行它需要多久:

在我的酷睿 i7-8700k 6 核 CPU 上,運(yùn)行時間為 7.9864 秒!在這樣的高端 CPU 上,這種速度看起來是難以讓人接受的,看看我們能做點(diǎn)什么。

二、更快的方法

為了便于理解并行化的提升,假設(shè)我們需要執(zhí)行相同的任務(wù),比如將 1000 個釘子釘入木頭,假如釘入一個需要一秒,一個人就需要 1000 秒來完成任務(wù)。四個人組隊(duì)就只需要 250 秒。

在我們這個包含 1000 個圖像的例子中,可以讓 Python 做類似的工作:

  • 將 jpeg 文件列表分成 4 個小組;

  • 運(yùn)行 Python 解釋器中的 4 個獨(dú)立實(shí)例;

  • 讓 Python 的每個實(shí)例處理 4 個數(shù)據(jù)小組中的一個;

  • 結(jié)合四個處理過程得到的結(jié)果得出最終結(jié)果列表。

這一方法的重點(diǎn)在于,Python 幫我們處理了所有棘手的工作。我們只需告訴它我們想要運(yùn)行哪個函數(shù),要用多少 Python 實(shí)例,剩下的就交給它了!只需改變?nèi)写a。實(shí)例:

?從以上代碼中摘出一行:

?你的 CPU 核越多,啟動的 Python 進(jìn)程越多,我的 CPU 有 6 個核。實(shí)際處理代碼如下:

「executor.map()」將你想要運(yùn)行的函數(shù)和列表作為輸入,列表中的每個元素都是我們函數(shù)的單個輸入。由于我們有 6 個核,我們將同時處理該列表中的 6 個項(xiàng)目!

如果再次用以下代碼運(yùn)行我們的程序:

我們可以將運(yùn)行時間降到 1.14265 秒,速度提升了近 6 倍!

最后

注意:在生成更多 Python 進(jìn)程及在它們之間整理數(shù)據(jù)時會有一些開銷,所以速度提升并不總是這么明顯。

但是總的來說,速度提升還是非??捎^的。


僅需三行Python代碼,讓數(shù)據(jù)預(yù)處理速度提高2到6倍!的評論 (共 條)

分享到微博請遵守國家法律
库尔勒市| 新和县| 甘孜| 绵阳市| 荣昌县| 宁阳县| 沐川县| 桑植县| 彰化市| 鞍山市| 肇东市| 永年县| 六盘水市| 贵阳市| 怀化市| 咸丰县| 望城县| 合肥市| 方正县| 香港| 嘉兴市| 尚义县| 天气| 儋州市| 富顺县| 汉阴县| 乐平市| 延吉市| 深泽县| 彰化县| 西畴县| 左云县| 延边| 改则县| 衢州市| 万山特区| 临海市| 邻水| 惠安县| 樟树市| 准格尔旗|