溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中簡單易用的并行加速技巧是什么

發(fā)布時間:2023-04-13 11:02:44 來源:億速云 閱讀:121 作者:iii 欄目:編程語言

本文小編為大家詳細介紹“Python中簡單易用的并行加速技巧是什么”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“Python中簡單易用的并行加速技巧是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

使用joblib進行并行計算

作為一個被廣泛使用的第三方Python庫(譬如scikit-learn項框架中就大量使用joblib進行眾多機器學習算法的并行加速),我們可以使用pip install joblib對其進行安裝,安裝完成后,下面我們來學習一下joblib中有關(guān)并行運算的常用方法:

使用Parallel與delayed進行并行加速

joblib中實現(xiàn)并行計算只需要使用到其Parallel和delayed方法即可,使用起來非常簡單方便,下面我們直接以一個小例子來演示:

joblib實現(xiàn)并行運算的思想是將一組通過循環(huán)產(chǎn)生的串行計算子任務,以多進程或多線程的方式進行調(diào)度,而我們針對自定義的運算任務需要做的僅僅是將它們封裝為函數(shù)的形式即可,譬如:

import time

def task_demo1():

time.sleep(1)

return time.time()

接著只需要像下面的形式一樣,為Parallel()設(shè)置相關(guān)參數(shù)后,銜接循環(huán)創(chuàng)建子任務的列表推導過程,其中利用delayed()包裹自定義任務函數(shù),再銜接()傳遞任務函數(shù)所需的參數(shù)即可,其中n_jobs參數(shù)用于設(shè)置并行任務同時執(zhí)行的worker數(shù)量,因此在這個例子中可以看到進度條是按照4個一組遞增的,可以看到最終時間開銷也達到了并行加速效果:

Python中簡單易用的并行加速技巧是什么

其中可以根據(jù)計算任務以及機器CPU核心數(shù)具體情況為Parallel()調(diào)節(jié)參數(shù),核心參數(shù)有:

  • backend:用于設(shè)置并行方式,其中多進程方式有'loky'(更穩(wěn)定)和'multiprocessing'兩種可選項,多線程有'threading'一種選項。默認為'loky'。

  • n_jobs:用于設(shè)置并行任務同時執(zhí)行的worker數(shù)量,當并行方式為多進程時,n_jobs最多可設(shè)置為機器CPU邏輯核心數(shù)量,超出亦等價于開啟全部核心,你也可以設(shè)置為-1來快捷開啟全部邏輯核心,若你不希望全部CPU資源均被并行任務占用,則可以設(shè)置更小的負數(shù)來保留適當?shù)目臻e核心,譬如設(shè)置為-2則開啟全部核心-1個核心,設(shè)置為-3則開啟全部核心-2個核心。

譬如下面的例子,在我這臺邏輯核心數(shù)為8的機器上,保留兩個核心進行并行計算:

Python中簡單易用的并行加速技巧是什么

關(guān)于并行方式的選擇上,由于Python中多線程時全局解釋器鎖的限制,如果你的任務是計算密集型,則推薦使用默認的多進程方式加速,如果你的任務是IO密集型譬如文件讀寫、網(wǎng)絡請求等,則多線程是更好的方式且可以將n_jobs設(shè)置的很大,舉個簡單的例子,可以看到,通過多線程并行,我們在5秒的時間里完成了1000次請求,遠快于單線程17秒請求100次的成績(此例僅供參考,大家在學習嘗試時請不要過于頻繁訪問他人的網(wǎng)站):

Python中簡單易用的并行加速技巧是什么

你可以根據(jù)自己實際任務的不同,好好利用joblib來加速你的日常工作。

讀到這里,這篇“Python中簡單易用的并行加速技巧是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI