最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 多線程中join()的作用

 更新時間:2020年10月29日 10:48:54   作者:用戶1278550  
這篇文章主要介紹了python 多線程中join()的作用,通過代碼實踐來加深對 join()的認識,幫助大家更好的理解和學習python 多線程,感興趣的朋友可以了解下

一 前言

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

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

二 動手實踐

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

# encoding: utf-8
"""
author: yangyi@youzan.com
time: 2019/7/30 11:20 AM
func:
"""

from multiprocessing import Process
import os
import time

def 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 .'

輸出結果

結果顯示

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

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 .'

結果如下:

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í)行,主進程結束。
  print now() + ' Process end .'

結果如下:

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

2.4 小結

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

思考題

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

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

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

相關文章

  • Python實現(xiàn)隨機游走的詳細解釋

    Python實現(xiàn)隨機游走的詳細解釋

    這篇文章主要介紹了Python實現(xiàn)隨機游走的詳細解釋,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Python列表(List)知識點總結

    Python列表(List)知識點總結

    在本篇文章中小編給大家分享了關于Python列表(List)知識點一直對應的實例內容,需要的朋友們學習下。
    2019-02-02
  • Python實現(xiàn)繪制凸包的示例代碼

    Python實現(xiàn)繪制凸包的示例代碼

    凸包(Convex Hull)是一個計算幾何(圖形學)中的概念。這篇文章主要為大家詳細介紹了Python繪制凸包的示例代碼,感興趣的小伙伴可以了解一下
    2023-05-05
  • pandas刪除指定行詳解

    pandas刪除指定行詳解

    這篇文章主要介紹了pandas刪除指定行的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 詳解python tkinter包獲取本地絕對路徑(以獲取圖片并展示)

    詳解python tkinter包獲取本地絕對路徑(以獲取圖片并展示)

    這篇文章主要給大家介紹了關于python tkinter包獲取本地絕對路徑(以獲取圖片并展示)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Pytorch-LSTM輸入輸出參數(shù)方式

    Pytorch-LSTM輸入輸出參數(shù)方式

    這篇文章主要介紹了Pytorch-LSTM輸入輸出參數(shù)方式,具有很好的參考價值,希望對大家有所幫助。
    2022-07-07
  • Django DRF APIView源碼運行流程詳解

    Django DRF APIView源碼運行流程詳解

    這篇文章主要介紹了Django DRF APIView源碼運行流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • python 如何在list中找Topk的數(shù)值和索引

    python 如何在list中找Topk的數(shù)值和索引

    這篇文章主要介紹了python 如何在list中找Topk的數(shù)值和索引的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python運用pygame庫實現(xiàn)雙人彈球小游戲

    python運用pygame庫實現(xiàn)雙人彈球小游戲

    這篇文章主要為大家詳細介紹了python運用pygame庫實現(xiàn)雙人彈球小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python設計模式之建造者模式實例詳解

    Python設計模式之建造者模式實例詳解

    這篇文章主要介紹了Python設計模式之建造者模式,簡單說明了建造者模式的概念、原理,并結合實例形式分析了Python定義及使用建造者模式相關操作技巧,需要的朋友可以參考下
    2019-01-01

最新評論

吴川市| 永泰县| 铜山县| 桂林市| 西林县| 台湾省| 临猗县| 北碚区| 永兴县| 龙门县| 边坝县| 宜宾市| 鹤峰县| 刚察县| 榕江县| 垫江县| 馆陶县| 桂平市| 太仆寺旗| 射阳县| 元朗区| 吴江市| 武乡县| 林芝县| 清河县| 德兴市| 五莲县| 棋牌| 治多县| 临汾市| 周宁县| 阿拉善左旗| 金湖县| 开江县| 石首市| 潼关县| 湖口县| 汤原县| 郯城县| 长子县| 兴化市|