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

python線程join方法原理解析

 更新時(shí)間:2020年02月11日 10:19:46   作者:xushukui  
這篇文章主要介紹了python線程join方法原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了python線程join方法原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

幾個(gè)事實(shí)

1 python 默認(rèn)參數(shù)創(chuàng)建線程后,不管主線程是否執(zhí)行完畢,都會(huì)等待子線程執(zhí)行完畢才一起退出,有無(wú)join結(jié)果一樣

2 如果創(chuàng)建線程,并且設(shè)置了daemon為true,即thread.setDaemon(True), 則主線程執(zhí)行完畢后自動(dòng)退出,不會(huì)等待子線程的執(zhí)行結(jié)果。而且隨著主線程退出,子線程也消亡。

3 join方法的作用是阻塞,等待子線程結(jié)束,join方法有一個(gè)參數(shù)是timeout,即如果主線程等待timeout,子線程還沒有結(jié)束,則主線程強(qiáng)制結(jié)束子線程。

4 如果線程daemon屬性為False, 則join里的timeout參數(shù)無(wú)效。主線程會(huì)一直等待子線程結(jié)束。

5 如果線程daemon屬性為True, 則join里的timeout參數(shù)是有效的, 主線程會(huì)等待timeout時(shí)間后,結(jié)束子線程。此處有一個(gè)坑,即如果同時(shí)有N個(gè)子線程join(timeout),那么實(shí)際上主線程會(huì)等待的超時(shí)時(shí)間最長(zhǎng)為 N * timeout, 因?yàn)槊總€(gè)子線程的超時(shí)開始時(shí)刻是上一個(gè)子線程超時(shí)結(jié)束的時(shí)刻。

測(cè)試代碼

import threading,time

def func():
  print "start thread time: ",time.strftime('%H:%M:%S')
  time.sleep(3)
  print "stop thread time: ",time.strftime('%H:%M:%S')

thread_list = []
for i in range(3):
  t1 = threading.Thread(target=func)
  #t1.setDaemon(True)

  thread_list.append(t1)

for r in thread_list:
  r.start()

for t in thread_list:
  #t.join(1)
  t.join()
print "stop main thread"

###子線程如果設(shè)置了t.join(timeout),則根據(jù)timeout的不同,結(jié)果會(huì)不同,前提是設(shè)置了setDaemon(True),否則join的timeout是沒效的

#設(shè)置了setDaemon(True),但是沒設(shè)置t.join()的運(yùn)行結(jié)果:
#start thread time: 17:25:29
#start thread time: 17:25:29
#start thread time: 17:25:29
#stop main thread

#加了t1.setDaemon(True),并且設(shè)置了超時(shí)時(shí)間t.join(1)的運(yùn)行結(jié)果:
#start thread time: 17:12:24
#start thread time: 17:12:24
#start thread time: 17:12:24
#stop main thread

#沒加t1.setDaemon(True),并且設(shè)置了超時(shí)時(shí)間t.join(1)的運(yùn)行結(jié)果,不過(guò)因?yàn)閟etDaemon的參數(shù)不是True所以就算設(shè)置了超時(shí)時(shí)間也沒用:
#start thread time: 17:13:28
#start thread time: 17:13:28
#start thread time: 17:13:28
#stop main thread
#stop thread time:  17:13:31
#stop thread time:  17:13:31
#stop thread time:  17:13:31

#沒加t1.setDaemon(True),但是設(shè)置了t.join(),沒有超時(shí)時(shí)間的阻塞的運(yùn)行結(jié)果:
#start thread time: 17:16:12
#start thread time: 17:16:12
#start thread time: 17:16:12
#stop thread time:  17:16:15
#stop thread time:  17:16:15
#stop thread time:  17:16:15
#stop main thread 

#即沒有設(shè)置setDaemon(True),也沒有設(shè)置join()的運(yùn)行結(jié)果:
#start thread time: 17:22:25
#start thread time: 17:22:25
#start thread time: 17:22:25
#stop main thread
#stop thread time:  17:22:28
#stop thread time:  17:22:28
#stop thread time:  17:22:28

總結(jié):

如果想讓子進(jìn)程正常的運(yùn)行結(jié)束(子進(jìn)程中所有的內(nèi)容都運(yùn)行了),則如果設(shè)置join(timeout)的話,前提是設(shè)置setDaemon(True),且setDaemon的參數(shù)為True,且join(timeout)的超時(shí)時(shí)間必須大于子進(jìn)程執(zhí)行所需的時(shí)間,不然沒等子進(jìn)程運(yùn)行結(jié)束就超時(shí)退出了或者直接設(shè)置join()不帶超時(shí)時(shí)間,也不用設(shè)置setDaemon(True)了

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一篇文章搞定Python操作文件與目錄

    一篇文章搞定Python操作文件與目錄

    這篇文章主要給大家介紹了關(guān)于如何通過(guò)一篇文章搞定Python操作文件與目錄的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python實(shí)現(xiàn)批量將符合要求的文件自動(dòng)復(fù)制到新文件夾

    Python實(shí)現(xiàn)批量將符合要求的文件自動(dòng)復(fù)制到新文件夾

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)批量將文件名稱符合要求的文件自動(dòng)復(fù)制到新文件夾,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考下
    2023-10-10
  • pygame學(xué)習(xí)筆記(3):運(yùn)動(dòng)速率、時(shí)間、事件、文字

    pygame學(xué)習(xí)筆記(3):運(yùn)動(dòng)速率、時(shí)間、事件、文字

    這篇文章主要介紹了pygame學(xué)習(xí)筆記(3):運(yùn)動(dòng)速率、時(shí)間、事件、文字,本文講解了運(yùn)動(dòng)速率、事件、字體及字符顯示等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Python使用HTTP POST上傳WAV文件的方法

    Python使用HTTP POST上傳WAV文件的方法

    Python是一個(gè)非常流行的編程語(yǔ)言,可以用于開發(fā)不同類型的應(yīng)用程序。其中,上傳文件是一個(gè)非常常見的需求。具體而言,我們探討了使用HTTP POST請(qǐng)求上傳單個(gè)和多個(gè)WAV文件的方法。無(wú)論你是需要將音頻文件上傳到云存儲(chǔ)還是服務(wù)器,這些方法都能幫助你上傳文件。
    2023-06-06
  • pygame 精靈的行走及二段跳的實(shí)現(xiàn)方法(必看篇)

    pygame 精靈的行走及二段跳的實(shí)現(xiàn)方法(必看篇)

    下面小編就為大家?guī)?lái)一篇pygame 精靈的行走及二段跳的實(shí)現(xiàn)方法(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • media配置及把用戶頭像從數(shù)據(jù)庫(kù)展示到前端的操作方法

    media配置及把用戶頭像從數(shù)據(jù)庫(kù)展示到前端的操作方法

    media配置可以讓用戶上傳的所有文件都固定的存放在某一個(gè)指定的文件夾下,接下來(lái)通過(guò)本文給大家介紹下media配置及把用戶頭像從數(shù)據(jù)庫(kù)展示到前端的操作,需要的朋友可以參考下
    2022-09-09
  • Python基于pyCUDA實(shí)現(xiàn)GPU加速并行計(jì)算功能入門教程

    Python基于pyCUDA實(shí)現(xiàn)GPU加速并行計(jì)算功能入門教程

    這篇文章主要介紹了Python基于pyCUDA實(shí)現(xiàn)GPU加速并行計(jì)算功能,結(jié)合實(shí)例形式分析了Python使用pyCUDA進(jìn)行GPU加速并行計(jì)算的原理與相關(guān)實(shí)現(xiàn)操作技巧,需要的朋友可以參考下
    2018-06-06
  • pandas獲取某列最大值的所有數(shù)據(jù)的兩種方法

    pandas獲取某列最大值的所有數(shù)據(jù)的兩種方法

    本文主要介紹了pandas獲取某列最大值的所有數(shù)據(jù)實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Python基礎(chǔ)之?dāng)?shù)據(jù)類型知識(shí)匯總

    Python基礎(chǔ)之?dāng)?shù)據(jù)類型知識(shí)匯總

    今天帶大家復(fù)習(xí)一下Python基礎(chǔ)知識(shí),文中對(duì)數(shù)據(jù)類型相關(guān)知識(shí)做了詳細(xì)的匯總,對(duì)剛?cè)腴Tpython的小伙伴很有幫助喲,需要的朋友可以參考下
    2021-05-05
  • pygame庫(kù)實(shí)現(xiàn)移動(dòng)底座彈球小游戲

    pygame庫(kù)實(shí)現(xiàn)移動(dòng)底座彈球小游戲

    這篇文章主要為大家詳細(xì)介紹了pygame庫(kù)實(shí)現(xiàn)移動(dòng)底座彈球小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評(píng)論

闽侯县| 新竹县| 甘孜| 大田县| 宁陵县| 日照市| 茶陵县| 邻水| 大田县| 定州市| 桐柏县| 汝南县| 灌云县| 沙洋县| 澳门| 都匀市| 神木县| 武陟县| 灵武市| 横峰县| 新兴县| 南川市| 汾阳市| 建宁县| 铜鼓县| 临朐县| 邓州市| 洞口县| 柘荣县| 金湖县| 民和| 安庆市| 石楼县| 太仆寺旗| 承德县| 湾仔区| 苏尼特右旗| 翼城县| 谢通门县| 丹巴县| 日照市|