婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫(kù) > python多進(jìn)程執(zhí)行方法apply_async使用說明

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

熱門標(biāo)簽:阿里電話機(jī)器人對(duì)話 遼寧智能外呼系統(tǒng)需要多少錢 電銷機(jī)器人系統(tǒng)廠家鄭州 舉辦過冬奧會(huì)的城市地圖標(biāo)注 正安縣地圖標(biāo)注app 螳螂科技外呼系統(tǒng)怎么用 qt百度地圖標(biāo)注 地圖地圖標(biāo)注有嘆號(hào) 400電話申請(qǐng)資格

apply_async簡(jiǎn)介

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

apply_async使用簡(jiǎn)明代碼

import multiprocessing
#method為多次調(diào)用的方法
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()

使用總結(jié):

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

補(bǔ)充:記錄python multiprocessing Pool的map和apply_async方法

遇到的問題

在學(xué)習(xí)python多進(jìn)程時(shí),進(jìn)程上運(yùn)行的方法接收多個(gè)參數(shù)和多個(gè)結(jié)果時(shí)遇到了問題,現(xiàn)在經(jīng)過學(xué)習(xí)在這里總結(jié)一下

Pool.map()多參數(shù)任務(wù)

在給map方法傳入帶多個(gè)參數(shù)的方法不能達(dá)到預(yù)期的效果,像下面這樣

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

所以只能通過對(duì)有多個(gè)參數(shù)的方法進(jìn)行封裝,在進(jìn)程中運(yùn)行封裝后的方法如下

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

這樣就能達(dá)到傳遞多個(gè)參數(shù)的效果

ps:如果需要得到多個(gè)結(jié)果可以傳入多個(gè)元組在一個(gè)列表中

Pool.apply_async()輸出多個(gè)迭代結(jié)果

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

但是給apply_async()方法傳入多個(gè)值獲取多個(gè)迭代結(jié)果時(shí)就會(huì)報(bào)錯(cuò),因?yàn)樵摲椒ㄖ荒芙邮找粋€(gè)值,所以可以將該方法放入一個(gè)列表生成式中,如下

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兩個(gè)方法

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 分析詳解python多線程與多進(jìn)程區(qū)別
  • 手把手帶你了解python多進(jìn)程,多線程
  • Python多進(jìn)程共享numpy 數(shù)組的方法
  • 總結(jié)python多進(jìn)程multiprocessing的相關(guān)知識(shí)
  • Python多線程與多進(jìn)程相關(guān)知識(shí)總結(jié)
  • python實(shí)現(xiàn)多進(jìn)程并發(fā)控制Semaphore與互斥鎖LOCK
  • python 多進(jìn)程和多線程使用詳解
  • python 實(shí)現(xiàn)多進(jìn)程日志輪轉(zhuǎn)ConcurrentLogHandler
  • Python多進(jìn)程與多線程的使用場(chǎng)景詳解
  • Python 多進(jìn)程原理及實(shí)現(xiàn)
  • python多線程和多進(jìn)程關(guān)系詳解
  • Python多進(jìn)程的使用詳情

標(biāo)簽:隨州 信陽 濟(jì)源 合肥 阜新 昭通 淘寶好評(píng)回訪 興安盟

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python多進(jìn)程執(zhí)行方法apply_async使用說明》,本文關(guān)鍵詞  python,多,進(jìn)程,執(zhí)行,方法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python多進(jìn)程執(zhí)行方法apply_async使用說明》相關(guān)的同類信息!
  • 本頁收集關(guān)于python多進(jìn)程執(zhí)行方法apply_async使用說明的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 孙吴县| 申扎县| 旺苍县| 兴安县| 大同市| 宝兴县| 柘城县| 清丰县| 利辛县| 文安县| 山东| 信阳市| 宣威市| 偃师市| 苗栗县| 宜春市| 外汇| 虎林市| 怀来县| 贺州市| 红原县| 溆浦县| 彝良县| 乌恰县| 沙田区| 南木林县| 钦州市| 永丰县| 苗栗市| 宁德市| 盐津县| 呼玛县| 西平县| 且末县| 阳原县| 邢台市| 扬州市| 巴南区| 青海省| 成安县| 大埔县|