欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 多線程中join()的作用

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

一 前言

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

multiprocessing 是python提供的跨平臺(tái)版本的多進(jìn)程模塊。multiprocessing可以充分利用多核,提升程序運(yùn)行效率。multiprocessing支持子進(jìn)程,通信和共享數(shù)據(jù),執(zhí)行不同形式的同步,提供了Process、Queue、Pipe、Lock等組件。不過今天重點(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é)束之后才打印出來的。

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é)束之后輸出而沒有等待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ù)字的方法

    python獲取從命令行輸入數(shù)字的方法

    這篇文章主要介紹了python獲取從命令行輸入數(shù)字的方法,涉及Python操作命令行輸入的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • Python數(shù)據(jù)結(jié)構(gòu)與算法(幾種排序)小結(jié)

    Python數(shù)據(jù)結(jié)構(gòu)與算法(幾種排序)小結(jié)

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法(幾種排序)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Python第三方庫h5py_讀取mat文件并顯示值的方法

    Python第三方庫h5py_讀取mat文件并顯示值的方法

    今天小編就為大家分享一篇Python第三方庫h5py_讀取mat文件并顯示值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python用input輸入列表的實(shí)例代碼

    Python用input輸入列表的實(shí)例代碼

    在本篇文章里小編給大家整理的是關(guān)于Python用input輸入列表的實(shí)例代碼,需要的朋友們可以參考下。
    2020-02-02
  • python求平均值多種方法代碼示例

    python求平均值多種方法代碼示例

    要求一個(gè)列表中的數(shù)的平均值,我們可以使用Python來實(shí)現(xiàn),這篇文章主要給大家介紹了關(guān)于python求平均值多種方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Python openpyxl庫處理Excel文件高級(jí)應(yīng)用技巧實(shí)例

    Python openpyxl庫處理Excel文件高級(jí)應(yīng)用技巧實(shí)例

    openpyxl是一個(gè)用于處理Excel文件的Python庫,它提供了豐富的功能,使得用戶能夠輕松地讀取、寫入和操作Excel文件,而不需要依賴于Microsoft Excel軟件,作為一個(gè)開源項(xiàng)目,openpyxl在Python生態(tài)系統(tǒng)中得到了廣泛的應(yīng)用,成為處理Excel數(shù)據(jù)的首選工具之一
    2024-01-01
  • python繪制箱型圖

    python繪制箱型圖

    這篇文章主要為大家詳細(xì)介紹了python繪制箱型圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • python清除字符串中間空格的實(shí)例講解

    python清除字符串中間空格的實(shí)例講解

    今天小編就為大家分享一篇python清除字符串中間空格的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • PyCharm 2019.3發(fā)布增加了新功能一覽

    PyCharm 2019.3發(fā)布增加了新功能一覽

    這篇文章主要介紹了PyCharm 2019.3發(fā)布,增加了新功能一覽,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • python list轉(zhuǎn)dict示例分享

    python list轉(zhuǎn)dict示例分享

    這篇文章主要介紹了python list轉(zhuǎn)dict的使用方法,大家參考使用吧
    2014-01-01

最新評(píng)論