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

Python?并行加速技巧分享

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

1 前言

我們?cè)谌粘J褂肞ython進(jìn)行各種數(shù)據(jù)計(jì)算處理任務(wù)時(shí),若想要獲得明顯的計(jì)算加速效果,最簡(jiǎn)單明了的方式就是想辦法將默認(rèn)運(yùn)行在單個(gè)進(jìn)程上的任務(wù),擴(kuò)展到使用多進(jìn)程或多線程的方式執(zhí)行。

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

而今天我就來帶大家學(xué)習(xí)如何利用joblib這個(gè)非常簡(jiǎn)單易用的庫(kù)中的相關(guān)功能,來快速實(shí)現(xiàn)并行計(jì)算加速效果。

2 使用joblib進(jìn)行并行計(jì)算

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

2.1 使用Parallel與delayed進(jìn)行并行加速

joblib中實(shí)現(xiàn)并行計(jì)算只需要使用到其Parallel和delayed方法即可,使用起來非常簡(jiǎn)單方便

下面我們直接以一個(gè)小例子來演示:

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

import time
def task_demo1():
? ? time.sleep(1)
? ? return time.time()

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

可以看到最終時(shí)間開銷也達(dá)到了并行加速效果:

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

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

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

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

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

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

相關(guān)文章

  • Python初學(xué)時(shí)購(gòu)物車程序練習(xí)實(shí)例(推薦)

    Python初學(xué)時(shí)購(gòu)物車程序練習(xí)實(shí)例(推薦)

    下面小編就為大家?guī)硪黄狿ython初學(xué)時(shí)購(gòu)物車程序練習(xí)實(shí)例(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • 使用Python模擬操作windows應(yīng)用窗口詳解

    使用Python模擬操作windows應(yīng)用窗口詳解

    在日常工作中,我們經(jīng)常遇到需要進(jìn)行大量重復(fù)性任務(wù)的情況,這篇文章將介紹如何使用 Python 模擬操作記事本,感興趣的小伙伴可以了解下
    2025-02-02
  • Python中__slots__屬性介紹與基本使用方法

    Python中__slots__屬性介紹與基本使用方法

    在Python中,每個(gè)類都有實(shí)例屬性。默認(rèn)情況下Python用一個(gè)字典來保存一個(gè)對(duì)象的實(shí)例屬性。這非常有用,因?yàn)樗试S我們?cè)谶\(yùn)行時(shí)去設(shè)置任意的新屬性。下面這篇文章主要給大家介紹了關(guān)于Python中__slots__屬性與基本使用方法的相關(guān)資料,需要的朋友可以參考下
    2018-09-09
  • Python網(wǎng)絡(luò)爬蟲出現(xiàn)亂碼問題的解決方法

    Python網(wǎng)絡(luò)爬蟲出現(xiàn)亂碼問題的解決方法

    這篇文章主要為大家詳細(xì)介紹了Python網(wǎng)絡(luò)爬蟲出現(xiàn)亂碼問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • pymongo中g(shù)roup by的操作方法教程

    pymongo中g(shù)roup by的操作方法教程

    這篇文章主要給大家介紹了關(guān)于pymongo中g(shù)roup by的操作方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用pymongo具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 詳解Python如何批量檢查圖像是否可用

    詳解Python如何批量檢查圖像是否可用

    數(shù)據(jù)集中的圖像,一般不可用在以下3個(gè)方面:圖像過小、無法打開和“Premature end of JPEG file”。本文將為大家介紹Python如何批量檢查圖像是否可用,感興趣的可以了解一下
    2022-06-06
  • Python中日期和時(shí)間的互相轉(zhuǎn)換操作方法

    Python中日期和時(shí)間的互相轉(zhuǎn)換操作方法

    Python的datetime模塊提供了一套強(qiáng)大而靈活的工具,使我們能夠輕松地在不同的時(shí)間表示形式間相互轉(zhuǎn)換,并進(jìn)行復(fù)雜的時(shí)間計(jì)算,本文通過一個(gè)實(shí)用的例子向大家展示如何在Python中高效地進(jìn)行這些操作,感興趣的朋友一起看看吧
    2024-05-05
  • python/golang 刪除鏈表中的元素

    python/golang 刪除鏈表中的元素

    這篇文章主要介紹了python/golang 如何刪除鏈表中的元素,幫助大家更好的理解和使用python/golang,感興趣的朋友可以了解下
    2020-09-09
  • Python異步爬蟲多線程與線程池示例詳解

    Python異步爬蟲多線程與線程池示例詳解

    這篇文章主要為大家介紹了Python異步爬蟲多線程與線程池示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-09-09
  • Python將視頻或者動(dòng)態(tài)圖gif逐幀保存為圖片的方法

    Python將視頻或者動(dòng)態(tài)圖gif逐幀保存為圖片的方法

    本文是基于opencv將視頻和動(dòng)態(tài)圖gif保存為圖像幀的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-09-09

最新評(píng)論

彰武县| 密云县| 会理县| 七台河市| 合江县| 巴彦县| 济阳县| 湖南省| 衡南县| 灵璧县| 宣威市| 惠州市| 青岛市| 肥乡县| 富民县| 金溪县| 平舆县| 德兴市| 如东县| 永靖县| 遂溪县| 临城县| 潼南县| 抚远县| 若尔盖县| 武义县| 环江| 察雅县| 高邮市| 文昌市| 友谊县| 兴文县| 星座| 邹平县| 泽州县| 拉萨市| 阜阳市| 克拉玛依市| 乌什县| 那坡县| 屏南县|