主頁 > 知識庫 > python多進程執(zhí)行方法apply_async使用說明

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

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

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兩個方法

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

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

標簽:隨州 信陽 濟源 合肥 阜新 昭通 淘寶好評回訪 興安盟

巨人網絡通訊聲明:本文標題《python多進程執(zhí)行方法apply_async使用說明》,本文關鍵詞  python,多,進程,執(zhí)行,方法,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python多進程執(zhí)行方法apply_async使用說明》相關的同類信息!
  • 本頁收集關于python多進程執(zhí)行方法apply_async使用說明的相關信息資訊供網民參考!
  • 推薦文章