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

python多進程執(zhí)行方法apply_async使用說明

 更新時間:2021年03月05日 09:52:46   作者:yyyyyyyyyyang  
這篇文章主要介紹了python多進程執(zhí)行方法apply_async使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

apply_async簡介

python在同一個線程中多次執(zhí)行同一方法時,該方法執(zhí)行耗時較長且每次執(zhí)行過程及結果互不影響,如果只在主進程中執(zhí)行,效率會很低,因此使用multiprocessing.Pool(processes=n)及其apply_async()方法提高程序執(zhí)行的并行度從而提高程序的執(zhí)行效率,其中processes=n為程序并行執(zhí)行的進程數。

apply_async使用簡明代碼

import multiprocessing
#method為多次調用的方法
def method(param):
 pass
if __name__ == '__main__':
 pool = multiprocessing.Pool(processes=5)
 params= ['param1', 'param2', 'param3', 'param4', 'param5']
 for param in params:
  pool.apply_async(method, args=(param, )) 
 pool.close()

使用總結:

apply_async是異步非阻塞式,不用等待當前進程執(zhí)行完畢,隨時跟進操作系統(tǒng)調度來進行進程切換,即多個進程并行執(zhí)行,提高程序的執(zhí)行效率。

補充:記錄python multiprocessing Pool的map和apply_async方法

遇到的問題

在學習python多進程時,進程上運行的方法接收多個參數和多個結果時遇到了問題,現在經過學習在這里總結一下

Pool.map()多參數任務

在給map方法傳入帶多個參數的方法不能達到預期的效果,像下面這樣

def job(x ,y):
 return x * y
if __name__ == "__main__":
 pool = multiprocessing.Pool()
 res = pool.map(job, 2, 3)
 print res

所以只能通過對有多個參數的方法進行封裝,在進程中運行封裝后的方法如下

def job(x ,y):
 return x * y
def job1(z):
 return job(z[0], z[1])
if __name__ == "__main__":
 pool = multiprocessing.Pool()
 res = pool.map(job1, [(2, 3), (3, 4)])
 print res

這樣就能達到傳遞多個參數的效果

ps:如果需要得到多個結果可以傳入多個元組在一個列表中

Pool.apply_async()輸出多個迭代結果

在使用apply_async()方法接收多個參數的方法時,在任務方法中正常定義多個參數,參數以元組形式傳入即可

但是給apply_async()方法傳入多個值獲取多個迭代結果時就會報錯,因為該方法只能接收一個值,所以可以將該方法放入一個列表生成式中,如下

def job(x):
 return x * x
if __name__ == "__main__":
 pool multiprocessing.Pool()
 res = [pool.apply_async(target=job, (i,)) for i in range(3)]
 print [r.get() for r in res]

python 3中提供了starmap和startmap_async兩個方法

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • pycharm 代碼自動補全的實現方法(圖文)

    pycharm 代碼自動補全的實現方法(圖文)

    這篇文章主要介紹了pycharm 代碼自動補全的實現方法(圖文),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 使用CodeMirror實現Python3在線編輯器的示例代碼

    使用CodeMirror實現Python3在線編輯器的示例代碼

    這篇文章主要介紹了使用CodeMirror實現Python3在線編輯器的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • python列表的構造方法list()

    python列表的構造方法list()

    這篇文章主要介紹了python列表的構造方法list(),python中沒有數組這個概念,與之相應的是列表,本篇文章就來說說列表這個語法,下面文章詳細內容,需要的小伙伴可以參考一下
    2022-03-03
  • Python獲取網頁數據詳解流程

    Python獲取網頁數據詳解流程

    讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python來獲取網頁的數據,主要應用了Requests庫,大家可以在過程中查缺補漏,提升水平
    2021-10-10
  • Django+Celery實現動態(tài)配置定時任務的方法示例

    Django+Celery實現動態(tài)配置定時任務的方法示例

    這篇文章主要介紹了Django + Celery 實現動態(tài)配置定時任務的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Python3.6 + TensorFlow 安裝配置圖文教程(Windows 64 bit)

    Python3.6 + TensorFlow 安裝配置圖文教程(Windows 64 bit)

    這篇文章主要介紹了Python3.6 + TensorFlow 安裝配置的教程(Windows 64 bit),本文通過圖文并茂的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • 在Django的URLconf中使用多個視圖前綴的方法

    在Django的URLconf中使用多個視圖前綴的方法

    這篇文章主要介紹了在Django的URLconf中使用多個視圖前綴的方法,Django是Python中最為著名的遵循MVC結構的開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • python多線程socket編程之多客戶端接入

    python多線程socket編程之多客戶端接入

    這篇文章主要為大家詳細介紹了python多線程socket編程之多客戶端接入,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Python?爬取微博熱搜頁面

    Python?爬取微博熱搜頁面

    這篇文章主要介紹了Python?爬取微博熱搜頁面,關于Python?爬蟲,爬取網頁等相關內容一般可作為小練習,下面文章Python?爬取微博熱搜頁面也如此,需要的小伙伴可以參考一下
    2022-01-01
  • 生成Jupyter Lab快捷方式的小技巧

    生成Jupyter Lab快捷方式的小技巧

    這篇文章主要介紹了生成Jupyter Lab快捷方式的小技巧,操作迅猛,花費時間少,步驟詳細,有需要的朋友可以參考下,希望可以對廣大讀者朋友有所幫助
    2021-09-09

最新評論

仁怀市| 军事| 澎湖县| 昆山市| 红桥区| 万州区| 太仓市| 武夷山市| 利津县| 平阴县| 泸州市| 扎囊县| 克山县| 葵青区| 南昌市| 大洼县| 河南省| 天峨县| 中方县| 凌海市| 栾城县| 延边| 荥经县| 留坝县| 高雄市| 万山特区| 托克托县| 馆陶县| 汕尾市| 诸暨市| 都兰县| 乃东县| 广水市| 翼城县| 老河口市| 乐陵市| 台北县| 云浮市| 日喀则市| 年辖:市辖区| 洛隆县|