python多進程使用apply_async的使用方法詳解
前言:
python在同一個線程中多次執(zhí)行同一方法時,該方法執(zhí)行耗時較長且每次執(zhí)行過程及結(jié)果互不影響,如果只在主進程中執(zhí)行,效率會很低,因此使用multiprocessing.Pool(processes=n)及其apply_async()方法提高程序執(zhí)行的并行度從而提高程序的執(zhí)行效率,其中processes=n為程序并行執(zhí)行的進程數(shù)。
apply_async是異步非阻塞式,不用等待當前進程執(zhí)行完畢,隨時跟進操作系統(tǒng)調(diào)度來進行進程切換,即多個進程并行執(zhí)行,提高程序的執(zhí)行效率。
示例代碼1:
import time
import random
import multiprocessing
def func(x):
ts = random.randint(1, 10)
time.sleep(ts)
print(f'{x}執(zhí)行完畢!耗時{ts}s')
if __name__ == '__main__':
pool = multiprocessing.Pool(6)
for i in range(6):
print(f"開始執(zhí)行第{i}個任務(wù)...")
pool.apply_async(func, args=(i, ))
pool.close()
pool.join()運行結(jié)果:

在使用apply_async()方法接收多個參數(shù)的方法時,在任務(wù)方法中正常定義多個參數(shù),參數(shù)以元組形式傳入即可 但是給apply_async()方法傳入多個值獲取多個迭代結(jié)果時就會報錯,因為該方法只能接收一個值,所以可以將該方法放入一個列表生成式中。
示例代碼2:
import multiprocessing
def func(x):
return x ** 2
if __name__ == '__main__':
pool = multiprocessing.Pool()
res = [pool.apply_async(func, (i, )) for i in range(6)]
print([x for x in res])
print([x.get() for x in res])
pool.close()
pool.join()運行結(jié)果:

注意:join()等待所有子進程結(jié)束后再運行,使用join()前先使用close()關(guān)閉它。
到此這篇關(guān)于python多進程使用apply_async使用方法詳解的文章就介紹到這了,更多相關(guān)python apply_async 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用textract實現(xiàn)從各種文件中提取文本信息
textract是一個強大的Python庫,可以用于從各種文件格式中提取文本,本文將介紹textract的使用場景,以及一些常用的Python代碼案例,希望對大家有所幫助2024-01-01
Python爬蟲實現(xiàn)HTTP網(wǎng)絡(luò)請求多種實現(xiàn)方式
這篇文章主要介紹了Python爬蟲實現(xiàn)HTTP網(wǎng)絡(luò)請求多種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06
Python ORM框架SQLAlchemy學習筆記之數(shù)據(jù)查詢實例
這篇文章主要介紹了Python ORM框架SQLAlchemy學習筆記之數(shù)據(jù)查詢實例,需要的朋友可以參考下2014-06-06
Python數(shù)據(jù)可視化之matplotlib.pyplot繪圖的基本參數(shù)詳解
matplotlib.pyplot模塊是一個功能強大的畫圖模塊,可以對畫圖的多個參數(shù)進行調(diào)整,下面這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)可視化之matplotlib.pyplot繪圖基本參數(shù)的相關(guān)資料,需要的朋友可以參考下2022-04-04
Tensorflow設(shè)置顯存自適應(yīng),顯存比例的操作
今天小編就為大家分享一篇Tensorflow設(shè)置顯存自適應(yīng),顯存比例的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
python opencv3實現(xiàn)人臉識別(windows)
這篇文章主要為大家詳細介紹了python opencv3實現(xiàn)人臉識別程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05

