亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

python 多線程中join()的作用

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

一 前言

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

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

二 動手實踐

join()方法可以在當前位置阻塞主進程,帶執行join()的進程結束后再繼續執行主進程的代碼邏輯。

# encoding: utf-8'''author: yangyi@youzan.comtime: 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 .’

輸出結果

python 多線程中join()的作用

結果顯示

主進程的 Process end .是在func1 和func2 結束之后才打印出來的。

2.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() print now() + ’ Process end .’

結果如下:

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 執行完之后 。不等待p2 執行,主進程結束。 print now() + ’ Process end .’

結果如下:

python 多線程中join()的作用

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

2.4 小結

利用多線程時,一般都先讓子線程調用start() ,然后再去調用join(),讓主進程等待子進程結束才繼續走后續的邏輯。

思考題

能不能每個子進程調用start() 之后,然后直接調用join() 類似:

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

以上就是python 多線程中join()的作用的詳細內容,更多關于python 多線程join()的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 中文字幕国产一区 | 国产成人福利美女观看视频 | 欧美大片国产在线永久播放 | 国产a区 | 亚洲黄色在线视频 | 免费香蕉成视频成人网 | 欧美做暖小视频xo免费 | 欧美国产日韩一区二区三区 | 欧美午夜精品久久久久免费视 | 中文国产成人精品久久久 | 欧美日韩视频在线第一区二区三区 | 精品videosex性欧美 | 国产精品人伦久久 | 国产伦精一区二区三区视频 | 波多野结衣在线观看一区二区 | 国产三级国产精品国产国在线观看 | 男人女人做刺激视频免费 | 中日韩精品视频在线观看 | 国产三级小视频在线观看 | 国产精品日韩欧美一区二区 | 亚洲精品h | 怡红院精品视频 | 能直接看的一级欧美毛片 | 国产亚洲人成网站观看 | 日韩欧美印度一级毛片 | 一级片视频免费观看 | 成人在线免费小视频 | 美女视频网站永久免费观看软件 | 欧美精品黄页免费高清在线 | 国产色在线观看 | 亚洲男人天 | 久久99精品这里精品3 | 久色福利 | 国产综合久久一区二区三区 | 日本成人免费在线视频 | 亚洲久久视频 | 国产一区二区免费在线 | 国产成人精品999在线观看 | 91欧美精品| 久热香蕉在线视频 | www日本com|