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

python 多線程中join()的作用

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

一 前言

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

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

二 動(dòng)手實(shí)踐

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

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

輸出結(jié)果

結(jié)果顯示

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

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é)果如下:

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é)果如下:

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

2.4 小結(jié)

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

思考題

能不能每個(gè)子進(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()的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python實(shí)現(xiàn)隨機(jī)游走的詳細(xì)解釋

    Python實(shí)現(xiàn)隨機(jī)游走的詳細(xì)解釋

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

    Python列表(List)知識(shí)點(diǎn)總結(jié)

    在本篇文章中小編給大家分享了關(guān)于Python列表(List)知識(shí)點(diǎn)一直對(duì)應(yīng)的實(shí)例內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • Python實(shí)現(xiàn)繪制凸包的示例代碼

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

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

    pandas刪除指定行詳解

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

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

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

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

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

    Django DRF APIView源碼運(yùn)行流程詳解

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

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

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

    python運(yùn)用pygame庫(kù)實(shí)現(xiàn)雙人彈球小游戲

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

    Python設(shè)計(jì)模式之建造者模式實(shí)例詳解

    這篇文章主要介紹了Python設(shè)計(jì)模式之建造者模式,簡(jiǎn)單說(shuō)明了建造者模式的概念、原理,并結(jié)合實(shí)例形式分析了Python定義及使用建造者模式相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01

最新評(píng)論

游戏| 仙游县| 舞阳县| 贡嘎县| 苍南县| 东宁县| 穆棱市| 麦盖提县| 凤阳县| 上虞市| 玉环县| 肃宁县| 堆龙德庆县| 米林县| 广宁县| 南通市| 沙湾县| 仙桃市| 绥化市| 宜良县| 舟山市| 略阳县| 龙游县| 昆明市| 卓资县| 垫江县| 永吉县| 乐至县| 固阳县| 双峰县| 奎屯市| 拜泉县| 南澳县| 镇坪县| 正镶白旗| 阳江市| 天峻县| 五常市| 万州区| 华阴市| 延边|