成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

1.簡介

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

而對于我們這些從事數據分析工作的人員而言,以最簡單的方式實現等價的加速運算的效果尤為重要,從而避免將時間過多花費在編寫程序上。而今天的文章費老師我就來帶大家學習如何利用joblib這個非常簡單易用的庫中的相關功能,來快速實現并行計算加速效果。

2.使用joblib進行并行計算

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

2.1 使用Parallel與delayed進行并行加速

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

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

import time

def task_demo1():

time.sleep(1)

return time.time()

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

其中可以根據計算任務以及機器CPU核心數具體情況為Parallel()調節參數,核心參數有:

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

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

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

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


責任編輯:華軒 來源: Python大數據分析
相關推薦

2010-03-12 16:01:23

Python地圖

2019-07-10 15:51:40

Python數據分析代碼

2020-08-21 08:52:09

Python數據分析工具

2020-10-09 10:15:08

設計UI技巧

2016-09-18 18:27:21

KubernetesDocker

2015-11-10 18:04:22

FileMaker

2009-06-29 10:34:49

網站加速Page SpeedGoogle

2021-07-02 09:45:13

Python優化代碼

2015-08-17 10:50:51

美團多級下拉菜單簡潔

2022-05-26 08:12:39

PandasApply技巧

2017-04-27 10:07:52

框架設計實現

2021-03-05 13:30:51

MySQL數據庫壓測工具

2009-12-29 14:00:43

Ubuntu操作系統

2020-12-03 09:57:34

MySQL壓測工具數據庫

2009-03-13 10:54:18

SQL Server并行查詢數據庫管理

2024-05-07 09:02:47

2024-04-11 09:45:31

.NETRabbitMQEasyNetQ

2021-02-03 14:51:34

MySQL數據庫壓測工具

2019-07-25 14:23:36

2013-08-02 13:25:00

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91性高湖久久久久久久久_久久99 | 欧美一区二区三区四区视频 | 青青草久久 | 亚洲日本欧美日韩高观看 | 999精品在线观看 | 日日草天天干 | 国产日韩一区二区三免费高清 | 一级黄色片日本 | 色综合久久天天综合网 | 欧美午夜视频 | 亚洲欧美中文日韩在线v日本 | 99视频在线看 | 国产乱码精品一区二区三区五月婷 | 一区二区三区视频在线 | 91亚洲精品在线观看 | 欧美久久久久久久 | 久久久国产亚洲精品 | 91成人午夜性a一级毛片 | 久草免费在线 | 日韩综合一区 | 7777精品伊人久久精品影视 | 国产精品一区在线 | 欧产日产国产精品视频 | 国产欧美日韩综合精品一区二区 | 国产香蕉视频在线播放 | 男女网站免费 | 一级黄色毛片子 | 成人毛片一区二区三区 | av黄色网 | 久久久久久免费免费 | 狠狠爱一区二区三区 | 欧美在线观看一区 | av影音资源 | 2018天天干天天操 | 亚洲高清在线 | 一级黄色毛片 | 成人超碰| www日韩高清| 欧美日韩亚洲国产 | 国产精品一区二区在线 | 久久男人天堂 |