女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

pandarallel模塊怎么用

科技綠洲 ? 來源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-30 15:37 ? 次閱讀

眾所周知,由于GIL的存在,Python單進(jìn)程中的所有操作都是在一個(gè)CPU核上進(jìn)行的,所以為了提高運(yùn)行速度,我們一般會(huì)采用多進(jìn)程的方式。而多進(jìn)程無非就是以下幾種方案:

  • multiprocessing
  • concurrent.futures.ProcessPoolExecutor()
  • joblib
  • ppserver
  • celery

這些方案對于普通Pandas玩家來說都不是特別友好,怎樣才能算作一個(gè)友好的并行處理方案?

那就是原來的邏輯我基本不用變,僅修改需要計(jì)算的那行就能完成我們目標(biāo)的方案,而 pandarallel 就是一個(gè)這樣友好的工具。

沒有并行計(jì)算(原始pandas)

pandarallel

df.apply(func)

df.parallel_apply(func)

df.applymap(func)

df.parallel_applymap(func)

df.groupby(args).apply(func)

df.groupby(args).parallel_apply(func)

df.groupby(args1).col_name.rolling(args2).apply(func)

df.groupby(args1).col_name.rolling(args2).parallel_apply(func)

df.groupby(args1).col_name.expanding(args2).apply(func)

df.groupby(args1).col_name.expanding(args2).parallel_apply(func)

series.map(func)

series.parallel_map(func)

series.apply(func)

series.parallel_apply(func)

series.rolling(args).apply(func)

series.rolling(args).parallel_apply(func)

可以看到,在 pandarallel 的世界里,你只需要替換原有的 pandas 處理語句就能實(shí)現(xiàn)多CPU并行計(jì)算。非常方便、非常nice.

圖片

在4核CPU的性能測試上,它比原始語句快了接近4倍。測試條件(OS: Linux Ubuntu 16.04,Hardware: Intel Core i7 @ 3.40 GHz - 4 cores),這就是我所說的,它把CPU充分利用了起來。

下面就給大家介紹這個(gè)模塊怎么用,其實(shí)非常簡單,任何代碼只需要加幾行代碼就能實(shí)現(xiàn)質(zhì)的飛躍。

1.準(zhǔn)備

開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。

**(可選1) **如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.

**(可選2) **此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南

請選擇以下任一種方式輸入命令安裝依賴

  1. Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
  2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
  3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install pandarallel

對于windows用戶,有一個(gè)不好的消息是,它只能在Windows的linux子系統(tǒng)上運(yùn)行(WSL),你可以在微軟官網(wǎng)上找到安裝教程

https://docs.microsoft.com/zh-cn/windows/wsl/about

2.使用Pandarallel

使用前,需要對Pandarallel進(jìn)行初始化:

from pandarallel import pandarallel
pandarallel.initialize()

這樣才能調(diào)用并行計(jì)算的API,不過 initialize 中有一個(gè)重要參數(shù)需要說明,那就是 nb_workers ,它將指定并行計(jì)算的Worker數(shù),如果沒有設(shè)置,所有CPU的核都會(huì)用上。

Pandarallel一共支持8種Pandas操作,下面是一個(gè)apply方法的例子。

import pandas as pd
import time
import math
import numpy as np
from pandarallel import pandarallel

# 初始化
pandarallel.initialize()
df_size = int(5e6)
df = pd.DataFrame(dict(a=np.random.randint(1, 8, df_size),
                       b=np.random.rand(df_size)))
def func(x):
    return math.sin(x.a**2) + math.sin(x.b**2)

# 正常處理
res = df.apply(func, axis=1)

# 并行處理
res_parallel = df.parallel_apply(func, axis=1)

# 查看結(jié)果是否相同
res.equals(res_parallel)

其他方法使用上也是類似的,在原始的函數(shù)名稱前加上 parallel_,比如 DataFrame.groupby.apply:

import pandas as pd
import time
import math
import numpy as np
from pandarallel import pandarallel

# 初始化
pandarallel.initialize()
df_size = int(3e7)
df = pd.DataFrame(dict(a=np.random.randint(1, 1000, df_size),
                       b=np.random.rand(df_size)))
def func(df):
    dum = 0
    for item in df.b:
        dum += math.log10(math.sqrt(math.exp(item**2)))
        
    return dum / len(df.b)

# 正常處理
res = df.groupby("a").apply(func)
# 并行處理
res_parallel = df.groupby("a").parallel_apply(func)
res.equals(res_parallel)

又比如 DataFrame.groupby.rolling.apply:

import pandas as pd
import time
import math
import numpy as np
from pandarallel import pandarallel

# 初始化
pandarallel.initialize()
df_size = int(1e6)
df = pd.DataFrame(dict(a=np.random.randint(1, 300, df_size),
                       b=np.random.rand(df_size)))
def func(x):
    return x.iloc[0] + x.iloc[1] ** 2 + x.iloc[2] ** 3 + x.iloc[3] ** 4

# 正常處理
res = df.groupby('a').b.rolling(4).apply(func, raw=False)
# 并行處理
res_parallel = df.groupby('a').b.rolling(4).parallel_apply(func, raw=False)
res.equals(res_parallel)

案例都是類似的,這里就直接列出表格,不浪費(fèi)大家寶貴的時(shí)間去閱讀一些重復(fù)的例子了:

沒有并行計(jì)算(原始pandas)

pandarallel

df.apply(func)

df.parallel_apply(func)

df.applymap(func)

df.parallel_applymap(func)

df.groupby(args).apply(func)

df.groupby(args).parallel_apply(func)

df.groupby(args1).col_name.rolling(args2).apply(func)

df.groupby(args1).col_name.rolling(args2).parallel_apply(func)

df.groupby(args1).col_name.expanding(args2).apply(func)

df.groupby(args1).col_name.expanding(args2).parallel_apply(func)

series.map(func)

series.parallel_map(func)

series.apply(func)

series.parallel_apply(func)

series.rolling(args).apply(func)

series.rolling(args).parallel_apply(func)

3.注意事項(xiàng)

1. 我有 8 個(gè) CPU,但 parallel_apply 只能加快大約4倍的計(jì)算速度。為什么?

答:正如我前面所言,Python中每個(gè)進(jìn)程占用一個(gè)核,Pandarallel 最多只能加快到你所擁有的核心的總數(shù),一個(gè) 4 核的超線程 CPU 將向操作系統(tǒng)顯示 8 個(gè) CPU,但實(shí)際上只有 4 個(gè)核心,因此最多加快4倍。

2. 并行化是有成本的(實(shí)例化新進(jìn)程,通過共享內(nèi)存發(fā)送數(shù)據(jù),...),所以只有當(dāng)并行化的計(jì)算量足夠大時(shí),并行化才是有意義的。對于很少量的數(shù)據(jù),使用 Pandarallel 并不總是值得的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2783

    瀏覽量

    49622
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11038

    瀏覽量

    216037
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    電力電子集成模塊平板型熱管基板的傳熱特性

    電力電子集成模塊平板型熱管基板的傳熱特性:摘要:為了解決集成模塊中面臨的熱集中和熱影響問題,提高模塊的熱擴(kuò)散能力,并實(shí)現(xiàn)模塊熱管理集成,本
    發(fā)表于 10-14 12:26 ?28次下載

    LED模塊直流或交流電子控制裝置特殊要求

    LED模塊直流或交
    發(fā)表于 12-21 15:58 ?19次下載

    普通照明LED和LED模塊術(shù)語和定義

    1 范圍本標(biāo)準(zhǔn)規(guī)定了普通照明LED 和LED 模塊及相關(guān)的術(shù)語和定義。本標(biāo)準(zhǔn)適用于編寫有關(guān)普通照明LED 的各類標(biāo)準(zhǔn)及其有關(guān)的技術(shù)文獻(xiàn)。2 犔犈犇和犔
    發(fā)表于 12-22 16:23 ?0次下載

    普通照明LED模塊測試方法

    本標(biāo)準(zhǔn)規(guī)定了普通照明LED模塊的基本性能的測量方法。 本標(biāo)準(zhǔn)適用于功率大于或等于1W,在恒定電壓、恒定電流或恒定功率下穩(wěn)定工作的、外置控制的LED模塊;以及采用直流250V以下或
    發(fā)表于 04-14 14:35 ?33次下載

    照明白色LED模塊

    通過將LED(發(fā)光二極管)應(yīng)用于照明,實(shí)現(xiàn)約相當(dāng)于燈泡(60型)3倍的發(fā)光效率 高光束 通過多個(gè)LED芯片的高密度安裝,達(dá)到400流明的照明高光束白色LED模塊。 長壽命 通過LED的采用,
    發(fā)表于 04-15 15:01 ?20次下載

    IGBT模塊低熱阻陶瓷覆銅板的制作研究

    IGBT模塊低熱阻陶瓷覆銅板的制作研究
    發(fā)表于 02-28 23:12 ?3次下載

    GPS模塊介紹 無人機(jī)上的GPS模塊

    GPS模塊介紹 無人機(jī)上的GPS模塊,本文檔介紹了無人機(jī)上的GPS模塊的一些基本情況,希望給大家做個(gè)參考
    發(fā)表于 11-10 17:31 ?27次下載

    隆達(dá)推出最新車LED矩陣式光源模塊 將打造更安全的路環(huán)境

    繼2018年發(fā)表一系列LED車燈模塊后,近日,LED垂直整合廠隆達(dá)再推出最新車LED矩陣式光源模塊,可偵測對向來車并調(diào)整頭燈照射區(qū)域,也可投射動(dòng)態(tài)訊息于行車道路上,打造更安全的路環(huán)
    發(fā)表于 03-20 15:26 ?1603次閱讀

    PXI儀模塊的實(shí)現(xiàn)與針對EMC應(yīng)采取的措施

    重點(diǎn)描述了PXI儀模塊必須具有的PCI/PXI總線接口、精密時(shí)基和觸發(fā)控制器的實(shí)現(xiàn),最后探討了PXI儀模塊針對EMC應(yīng)采取的措施。實(shí)際應(yīng)用表明所設(shè)計(jì)的PXI儀
    發(fā)表于 04-13 09:12 ?2154次閱讀
    PXI儀<b class='flag-5'>用</b><b class='flag-5'>模塊</b>的實(shí)現(xiàn)與針對EMC應(yīng)采取的措施

    IGBT模塊封裝及車變流器設(shè)計(jì)與驗(yàn)證

    IGBT模塊封裝及車變流器設(shè)計(jì)與驗(yàn)證說明。
    發(fā)表于 05-19 14:52 ?41次下載

    什么是無線串口模塊?無線串口模塊怎么

    常看到很多網(wǎng)友在百度知道,天涯問答,搜搜問問等問答平臺(tái)上提問什么是無線串口模塊,無線串口模塊怎么等等這樣的問題。可能是剛接觸這個(gè)行業(yè)的人想了解這樣的產(chǎn)品才會(huì)產(chǎn)生疑問,思為無線針對這個(gè)問題為大家解答。
    的頭像 發(fā)表于 08-04 14:01 ?6319次閱讀
    什么是無線串口<b class='flag-5'>模塊</b>?無線串口<b class='flag-5'>模塊</b>怎么<b class='flag-5'>用</b>?

    電子模塊的電源設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《電子模塊的電源設(shè)計(jì).doc》資料免費(fèi)下載
    發(fā)表于 11-15 09:57 ?0次下載
    電子<b class='flag-5'>模塊</b><b class='flag-5'>用</b>的電源設(shè)計(jì)

    激光測距模塊的工作原理 激光測距模塊怎么 激光測距方法有哪幾種

    激光測距模塊的工作原理 激光測距模塊怎么 激光測距方法有哪幾種? 激光測距模塊,也稱為激光測距儀或激光測距裝置,是一種利用激光技術(shù)測量目標(biāo)距離的設(shè)備。它通常由激光發(fā)射器、接收器、時(shí)鐘
    的頭像 發(fā)表于 01-03 15:59 ?2748次閱讀

    如何檢測電源模塊的好壞 萬表測試輸出電壓 示波器測試電源模塊的輸出波形

    如何檢測電源模塊的好壞 萬表測試輸出電壓 示波器測試電源模塊的輸出波形 要測試電源模塊是否好壞,可以采取以下的步驟: 檢查電源線連接:確保電源線連接正確,沒有損壞或松動(dòng)。 使用萬
    的頭像 發(fā)表于 02-05 10:33 ?1808次閱讀

    光學(xué)模塊BAW隔離器解決方案應(yīng)用簡介

    電子發(fā)燒友網(wǎng)站提供《光學(xué)模塊BAW隔離器解決方案應(yīng)用簡介.pdf》資料免費(fèi)下載
    發(fā)表于 09-09 14:51 ?0次下載
    光學(xué)<b class='flag-5'>模塊</b><b class='flag-5'>用</b>BAW隔離器解決方案應(yīng)用簡介