python 多进程multiprocessing 如何获取子进程的返回值?进程池pool,apply_async(),get(),
生活随笔
收集整理的這篇文章主要介紹了
python 多进程multiprocessing 如何获取子进程的返回值?进程池pool,apply_async(),get(),
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
案例1
# -*- coding: utf-8 -*- """ @File : 20200318_攝像頭多進(jìn)程流傳輸.py @Time : 2020/3/18 14:58 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ import datetime from multiprocessing import Pool import timedef test(p):time.sleep(1)print(datetime.datetime.now())return pif __name__ == "__main__":pool = Pool(processes=2)result = []for i in range(10):'''for循環(huán)執(zhí)行流程:(1)添加子進(jìn)程到pool,并將這個對象(子進(jìn)程)添加到result這個列表中。(此時子進(jìn)程并沒有運(yùn)行)(2)執(zhí)行子進(jìn)程(同時執(zhí)行10個)'''# Dontla 20200319 apply_async()是啥意思?result.append(pool.apply_async(test, args=(i,))) # 維持執(zhí)行的進(jìn)程總數(shù)為10,當(dāng)一個進(jìn)程執(zhí)行完后添加新進(jìn)程.pool.close()# Dontla 20200319 阻塞主程序等待子進(jìn)程執(zhí)行完成pool.join()'''遍歷result列表,取出子進(jìn)程對象,訪問get()方法,獲取返回值。(此時所有子進(jìn)程已執(zhí)行完畢)'''for i in result:print(i.get())結(jié)果:
D:\20191031_tensorflow_yolov3\python\python.exe C:/Users/SIQI/Desktop/test_multiprocessing/20200318_攝像頭多進(jìn)程流傳輸.py 2020-03-24 08:56:15.331693 2020-03-24 08:56:15.331693 2020-03-24 08:56:16.332564 2020-03-24 08:56:16.332564 2020-03-24 08:56:17.333423 2020-03-24 08:56:17.333423 2020-03-24 08:56:18.334177 2020-03-24 08:56:18.334177 2020-03-24 08:56:19.334215 2020-03-24 08:56:19.334215 0 1 2 3 4 5 6 7 8 9Process finished with exit code 0案例2
# -*- coding: utf-8 -*- """ @File : test4.py @Time : 2020/3/24 8:40 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ # -*- coding: utf-8 -*- """ @File : 20200318_攝像頭多進(jìn)程流傳輸.py @Time : 2020/3/18 14:58 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ import datetime from multiprocessing import Pool import timedef test(p):time.sleep(1)print(datetime.datetime.now())return pif __name__ == "__main__":pool = Pool(processes=2)result = []for i in range(10):'''for循環(huán)執(zhí)行流程:(1)添加子進(jìn)程到pool,并將這個對象(子進(jìn)程)添加到result這個列表中。(此時子進(jìn)程并沒有運(yùn)行)(2)執(zhí)行子進(jìn)程(同時執(zhí)行10個)'''# Dontla 20200319 apply_async()是啥意思?# result.append(pool.apply_async(test, args=(i,))) # 維持執(zhí)行的進(jìn)程總數(shù)為10,當(dāng)一個進(jìn)程執(zhí)行完后添加新進(jìn)程.# get()是一個阻塞線程的方法?是的,要獲取函數(shù)結(jié)果,必須阻塞# print(pool.apply_async(test, args=(i,)).get())pool.apply_async(test, args=(i,)).get()# pool.close()# Dontla 20200319 阻塞主程序等待子進(jìn)程執(zhí)行完成# pool.join()'''遍歷result列表,取出子進(jìn)程對象,訪問get()方法,獲取返回值。(此時所有子進(jìn)程已執(zhí)行完畢)'''# for i in result:# print(i.get())print('over') D:\20191031_tensorflow_yolov3\python\python.exe C:/Users/SIQI/Desktop/test_multiprocessing/test4.py 2020-03-24 09:05:54.157505 2020-03-24 09:05:55.157542 2020-03-24 09:05:56.157578 2020-03-24 09:05:57.157614 2020-03-24 09:05:58.158199 2020-03-24 09:05:59.158941 2020-03-24 09:06:00.159096 2020-03-24 09:06:01.159715 2020-03-24 09:06:02.160607 2020-03-24 09:06:03.161478 overProcess finished with exit code 0參考文章1:python中使用多進(jìn)程multiprocessing并獲取子進(jìn)程的返回值
參考文章2:Python對進(jìn)程Multiprocessing子進(jìn)程返回值
總結(jié)
以上是生活随笔為你收集整理的python 多进程multiprocessing 如何获取子进程的返回值?进程池pool,apply_async(),get(),的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python multiprocessi
- 下一篇: python 多进程 multiproc