欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?并行加速技巧分享

 更新時間:2022年05月19日 16:31:14   作者:Python數(shù)據(jù)挖掘  
這篇文章主要介紹了Python?并行加速技巧分享,文章圍繞文章主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

1 前言

我們在日常使用Python進行各種數(shù)據(jù)計算處理任務時,若想要獲得明顯的計算加速效果,最簡單明了的方式就是想辦法將默認運行在單個進程上的任務,擴展到使用多進程或多線程的方式執(zhí)行。

而對于我們這些從事數(shù)據(jù)分析工作的人員而言,以最簡單的方式實現(xiàn)等價的加速運算的效果尤為重要,從而避免將時間過多花費在編寫程序上。

而今天我就來帶大家學習如何利用joblib這個非常簡單易用的庫中的相關功能,來快速實現(xiàn)并行計算加速效果。

2 使用joblib進行并行計算

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

2.1 使用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ù)后,銜接循環(huán)創(chuàng)建子任務的列表推導過程,其中利用delayed()包裹自定義任務函數(shù),再銜接()傳遞任務函數(shù)所需的參數(shù)即可,其中n_jobs參數(shù)用于設置并行任務同時執(zhí)行的worker數(shù)量,因此在這個例子中可以看到進度條是按照4個一組遞增的,

可以看到最終時間開銷也達到了并行加速效果:

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

  • backend:用于設置并行方式,其中多進程方式有'loky'(更穩(wěn)定)和'multiprocessing'兩種可選項,多線程有'threading'一種選項。默認為'loky'
  • n_jobs:用于設置并行任務同時執(zhí)行的worker數(shù)量,當并行方式為多進程時,n_jobs最多可設置為機器CPU邏輯核心數(shù)量,超出亦等價于開啟全部核心,你也可以設置為-1來快捷開啟全部邏輯核心,若你不希望全部CPU資源均被并行任務占用,則可以設置更小的負數(shù)來保留適當?shù)目臻e核心,譬如設置為-2則開啟全部核心-1個核心,設置為-3則開啟全部核心-2個核心

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

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

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

到此這篇關于Python 并行加速技巧分享的文章就介紹到這了,更多相關Python 加速內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python docx庫刪除復制paragraph及行高設置圖片插入示例

    Python docx庫刪除復制paragraph及行高設置圖片插入示例

    這篇文章主要為大家介紹了Python docx庫刪除復制paragraph及行高設置圖片插入操作實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Python中使用裝飾器和元編程實現(xiàn)結(jié)構(gòu)體類實例

    Python中使用裝飾器和元編程實現(xiàn)結(jié)構(gòu)體類實例

    Python中使用裝飾器和元編程實現(xiàn)結(jié)構(gòu)體類實例,本文的方法算是一種Python的黑魔法技術,并非Python的常規(guī)寫法,需要的朋友可以參考下
    2015-01-01
  • 淺談五大Python Web框架

    淺談五大Python Web框架

    Python這么多框架,能挨個玩?zhèn)€遍的人不多,坦白的說我也只用過其中的三個開發(fā)過項目,另外一些稍微接觸過,所以這里只能淺談一下,歡迎懂行的朋友們補充
    2017-03-03
  • python 處理數(shù)字,把大于上限的數(shù)字置零實現(xiàn)方法

    python 處理數(shù)字,把大于上限的數(shù)字置零實現(xiàn)方法

    今天小編就為大家分享一篇python 處理數(shù)字,把大于上限的數(shù)字置零實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python中文豎排顯示的方法

    Python中文豎排顯示的方法

    這篇文章主要介紹了Python中文豎排顯示的方法,可實現(xiàn)Python將中文豎排輸出顯示的功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 淺談Django中的數(shù)據(jù)庫模型類-models.py(一對一的關系)

    淺談Django中的數(shù)據(jù)庫模型類-models.py(一對一的關系)

    今天小編就為大家分享一篇淺談Django中的數(shù)據(jù)庫模型類-models.py(一對一的關系),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 詳解Python如何輕松實現(xiàn)定時執(zhí)行任務

    詳解Python如何輕松實現(xiàn)定時執(zhí)行任務

    這篇文章主要為大家詳細介紹了Python如何在Windows下不用任務管理器就實現(xiàn)輕松定時執(zhí)行任務,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下
    2022-10-10
  • Python變量的賦值、淺拷貝和深拷貝詳解

    Python變量的賦值、淺拷貝和深拷貝詳解

    這篇文章主要介紹了Python變量的賦值、淺拷貝和深拷貝詳解,python中為聲明一個變量有三種方法:賦值、淺拷貝、深拷貝,相信每個pythoner或多或少都知道他們之間的區(qū)別,但在某些點上,還是會踩坑,這篇文章記錄下所有關于這三者區(qū)別的疑問,需要的朋友可以參考下
    2023-11-11
  • 調(diào)試Django時打印SQL語句的日志代碼實例

    調(diào)試Django時打印SQL語句的日志代碼實例

    這篇文章主要介紹了調(diào)試Django時打印SQL語句的日志代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • centos6.4下python3.6.1安裝教程

    centos6.4下python3.6.1安裝教程

    這篇文章主要為大家詳細介紹了centos6.4下python3.6.1的安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論