python 多进程multiprocessing 如何获取子进程的返回值?进程池pool,apply_async(),get(),
生活随笔
收集整理的這篇文章主要介紹了
python 多进程multiprocessing 如何获取子进程的返回值?进程池pool,apply_async(),get(),
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
案例1
# -*- coding: utf-8 -*- """ @File : 20200318_攝像頭多進程流傳輸.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循環執行流程:(1)添加子進程到pool,并將這個對象(子進程)添加到result這個列表中。(此時子進程并沒有運行)(2)執行子進程(同時執行10個)'''# Dontla 20200319 apply_async()是啥意思?result.append(pool.apply_async(test, args=(i,))) # 維持執行的進程總數為10,當一個進程執行完后添加新進程.pool.close()# Dontla 20200319 阻塞主程序等待子進程執行完成pool.join()'''遍歷result列表,取出子進程對象,訪問get()方法,獲取返回值。(此時所有子進程已執行完畢)'''for i in result:print(i.get())結果:
D:\20191031_tensorflow_yolov3\python\python.exe C:/Users/SIQI/Desktop/test_multiprocessing/20200318_攝像頭多進程流傳輸.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_攝像頭多進程流傳輸.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循環執行流程:(1)添加子進程到pool,并將這個對象(子進程)添加到result這個列表中。(此時子進程并沒有運行)(2)執行子進程(同時執行10個)'''# Dontla 20200319 apply_async()是啥意思?# result.append(pool.apply_async(test, args=(i,))) # 維持執行的進程總數為10,當一個進程執行完后添加新進程.# get()是一個阻塞線程的方法?是的,要獲取函數結果,必須阻塞# print(pool.apply_async(test, args=(i,)).get())pool.apply_async(test, args=(i,)).get()# pool.close()# Dontla 20200319 阻塞主程序等待子進程執行完成# pool.join()'''遍歷result列表,取出子進程對象,訪問get()方法,獲取返回值。(此時所有子進程已執行完畢)'''# 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中使用多進程multiprocessing并獲取子進程的返回值
參考文章2:Python對進程Multiprocessing子進程返回值
總結
以上是生活随笔為你收集整理的python 多进程multiprocessing 如何获取子进程的返回值?进程池pool,apply_async(),get(),的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python multiprocessi
- 下一篇: python 多进程 multiproc