亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python 多線程中join()的作用

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

一 前言

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

multiprocessing 是python提供的跨平臺版本的多進程模塊。multiprocessing可以充分利用多核,提升程序運行效率。multiprocessing支持子進程,通信和共享數據,執(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() 函數

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獲取從命令行輸入數字的方法

    python獲取從命令行輸入數字的方法

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

    Python數據結構與算法(幾種排序)小結

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

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

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

    Python用input輸入列表的實例代碼

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

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

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

    Python openpyxl庫處理Excel文件高級應用技巧實例

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

    python繪制箱型圖

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

    python清除字符串中間空格的實例講解

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

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

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

    python list轉dict示例分享

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

最新評論