久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

python 多線程中join()的作用

瀏覽:82日期:2022-07-06 17:59:20

一 前言

溫習(xí)python 多進(jìn)程語法的時候,對 join的理解不是很透徹,本文通過代碼實踐來加深對 join()的認(rèn)識。

multiprocessing 是python提供的跨平臺版本的多進(jìn)程模塊。multiprocessing可以充分利用多核,提升程序運(yùn)行效率。multiprocessing支持子進(jìn)程,通信和共享數(shù)據(jù),執(zhí)行不同形式的同步,提供了Process、Queue、Pipe、Lock等組件。不過今天重點(diǎn)了解 join。后續(xù)文章會逐步學(xué)習(xí)介紹其他組件或者功能。

二 動手實踐

join()方法可以在當(dāng)前位置阻塞主進(jìn)程,帶執(zhí)行join()的進(jìn)程結(jié)束后再繼續(xù)執(zhí)行主進(jìn)程的代碼邏輯。

# encoding: utf-8'''author: [email protected]: 2019/7/30 11:20 AMfunc:'''from multiprocessing import Processimport osimport timedef now(): return str(time.strftime(’%Y-%m-%d %H:%M:%S’, time.localtime()))def func_1(name): print(now() + ’ Run child process %s (%s)...’ % (name, os.getpid())) time.sleep(4) print(now() + ’ Stop child process %s (%s)...n’ % (name, os.getpid()))def func_2(name): print(now() + ’ Run child process %s (%s)...’ % (name, os.getpid())) time.sleep(8) print(now() + ’ hello world!’) print(now() + ’ Stop child process %s (%s)...n’ % (name, os.getpid()))if __name__ == ’__main__’: print (’Parent process %s.’ % os.getpid()) p1 = Process(target=func_1, args=(’func_1’,)) p2 = Process(target=func_2, args=(’func_2’,)) print now() + ’ Process start.’ p1.start() p2.start() p1.join() p2.join() print now() + ’ Process end .’

輸出結(jié)果

python 多線程中join()的作用

結(jié)果顯示

主進(jìn)程的 Process end .是在func1 和func2 結(jié)束之后才打印出來的。

2.2 去掉 join() 函數(shù)

if __name__ == ’__main__’: print (’Parent process %s.’ % os.getpid()) p1 = Process(target=func_1, args=(’func_1’,)) p2 = Process(target=func_2, args=(’func_2’,)) print now() + ’ Process start.’ p1.start() p2.start() print now() + ’ Process end .’

結(jié)果如下:

python 多線程中join()的作用

2.3 去掉func_2 的 join()

if __name__ == ’__main__’: print (’Parent process %s.’ % os.getpid()) p1 = Process(target=func_1, args=(’func_1’,)) p2 = Process(target=func_2, args=(’func_2’,)) print now() + ’ Process start.’ p1.start() p2.start() p1.join() ### 在p1 執(zhí)行完之后 。不等待p2 執(zhí)行,主進(jìn)程結(jié)束。 print now() + ’ Process end .’

結(jié)果如下:

python 多線程中join()的作用

結(jié)果顯示主線程 'Process end'在func_1 執(zhí)行結(jié)束之后輸出而沒有等待func_2 執(zhí)行完畢。

2.4 小結(jié)

利用多線程時,一般都先讓子線程調(diào)用start() ,然后再去調(diào)用join(),讓主進(jìn)程等待子進(jìn)程結(jié)束才繼續(xù)走后續(xù)的邏輯。

思考題

能不能每個子進(jìn)程調(diào)用start() 之后,然后直接調(diào)用join() 類似:

p1.start()p1.join()p2.start()p2.join()

以上就是python 多線程中join()的作用的詳細(xì)內(nèi)容,更多關(guān)于python 多線程join()的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 日韩在线不卡 | 国产成人精品一区二区 | 成人在线一区二区三区 | 成全视频免费观看在线看黑人 | 亚洲欧美日韩另类精品一区二区三区 | 伊人久久综合影院 | 精久久久| 国产精品国产成人国产三级 | 在线亚洲成人 | 精品国产一区二区在线 | 中文字幕在线看 | 亚洲电影在线 | 欧美一级片在线 | 日韩一区欧美一区 | 午夜精品一区二区三区在线视频 | 超碰999| 成人欧美一区二区三区在线播放 | 欧美日本久久 | 欧美日韩国产在线看 | 欧美一区精品 | 欧美日韩一区在线 | www国产亚洲精品 | 亚洲激情视频在线观看 | 狠狠入ady亚洲精品经典电影 | 久久亚洲一区二区三区四区五区高 | 日韩色在线 | 久久久精 | 天天射日日操 | 亚洲精品国精品久久99热 | 日韩欧美成人影院 | 精品国产乱码久久久久夜 | 在线免费黄 | 人人草人人 | 亚洲欧洲精品成人久久奇米网 | www.国产视频 | 欧美日韩一区二区三区四区 | 欧美成年黄网站色视频 | 99视频网 | 国产精品日韩专区 | 久久综合久久综合久久 | xxxx网 |