日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

改變 Python 中線程執行順序的方法

瀏覽:139日期:2022-07-10 10:03:15

一、主線程會等待所有的子線程結束后才結束

首先我看下最普通情況下,主線程和子線程的情況。

import threadingfrom time import sleep, ctimedef sing(): for i in range(3): print('正在唱歌...%d' % i) sleep(1)def dance(): for i in range(3): print('正在跳舞...%d' % i) sleep(1)if __name__ == ’__main__’: print(’---開始---:%s’ % ctime()) t1 = threading.Thread(target=sing) t2 = threading.Thread(target=dance) t1.start() t2.start() print(’---結束---:%s’ % ctime())

運行結果:

改變 Python 中線程執行順序的方法

最后一行打印的代碼就算在一開始運行了,程序也不會結束。

只有等待所有的子線程(sing 和 dance)都執行完畢,主線程才會結束,即程序結束。

二、默認狀態下,多線程的執行順序是不確定的

我們先來看一段代碼:

import threadingimport timeclass MyThread(threading.Thread): def run(self): for i in range(3): time.sleep(1) msg = 'I’m '+self.name+’ @ ’+str(i) print(msg)def test(): for i in range(5): t = MyThread() t.start()if __name__ == ’__main__’: test()

運行結果:

I’m Thread-1 @ 0I’m Thread-2 @ 0I’m Thread-3 @ 0I’m Thread-4 @ 0I’m Thread-5 @ 0I’m Thread-1 @ 1I’m Thread-3 @ 1I’m Thread-2 @ 1I’m Thread-4 @ 1I’m Thread-5 @ 1I’m Thread-1 @ 2I’m Thread-3 @ 2I’m Thread-2 @ 2I’m Thread-4 @ 2I’m Thread-5 @ 2

每次的運行結果可能都不一樣,但大體差不多。

說明:

從代碼和執行結果我們可以看出,多線程程序的執行順序是不確定的。

當執行到 sleep 語句時,線程將被阻塞,到 sleep 結束后,線程進入就緒狀態,等待調度,而線程調度將自行選擇一個線程執行。

上面的代碼中只能保證每個線程都運行完整個 run 函數,但是線程的啟動順序、run 函數中每次循環的執行順序都不能確定。

總結

每個線程默認有一個名字,盡管上面的例子中沒有指定線程對象的 name,但是 python 會自動為線程指定一個名字。

當線程的 run() 方法結束時該線程完成。

無法控制線程調度程序,但可以通過別的方式來影響線程調度的方式。

三、Python daemon 守護線程詳解

當程序中擁有多個線程時,主線程執行結束并不會影響子線程繼續執行。

換句話說,只有程序中所有線程全部執行完畢后,程序才算真正結束。

Python 還支持創建另一種線程,稱為守護線程(或后臺線程)。

此類線程的特點是,當程序中主線程及所有非守護線程執行結束時,未執行完畢的守護線程也會隨之消亡,程序將結束運行。

守護線程本質也是線程,因此其創建方式和普通線程一樣,唯一不同之處在于,將普通線程設為守護線程,需通過線程對象調用其 damon 屬性,將該屬性的值改為 True。

注意:線程對象調用 daemon 屬性必須在調用 start() 方法之前,否則 Python 解釋器將報 RuntimeError 錯誤。

import threadingdef action(len): for i in range(len): print(threading.current_thread().getName() + ',' + str(i))def main(): t1 = threading.Thread(target=action, args=(10,)) # 設置子線程為守護進程 t1.daemon = True t1.start() for i in range(3): print(threading.current_thread().getName()+’,’+str(i))if __name__ == '__main__': main()

運行結果:

Thread-1,0MainThread,0MainThread,1MainThread,2

程序中,子線程里的程序就循環了一次,接著主線程執行完后,子線程就不打印信息了。

由于該程序中除了守護線程就只有主線程,因此只要主線程執行結束,則守護線程也隨之消亡。

四、控制線程執行順序

通過前面的學習我們知道,主線程和子線程會輪流獲得 CPU 的資源。

但有時候,我們想讓某個子線程先執行,然后再讓主線程執行代碼,該如何實現呢?

很簡單,通過調用線程對象的 join() 方法即可。

join() 方法的功能是在程序指定位置,優先讓該方法的調用者使用 CPU 資源。

該方法的語法格式如下:

thread.join( [timeout] )

timeout 參數作為可選參數,其功能是指定 thread 線程最多可以霸占 CPU 資源的時間(以秒為單位)。

如果省略,則默認直到 thread 執行結束(進入死亡狀態)才釋放 CPU 資源。

我們仍舊拿上面的例子來舉例:

import threadingdef action(len): for i in range(len): print(threading.current_thread().getName() + ',' + str(i))def main(): t1 = threading.Thread(target=action, args=(10,)) # 設置子線程為守護進程 t1.daemon = True t1.start() t1.join() for i in range(3): print(threading.current_thread().getName()+’,’+str(i))if __name__ == '__main__': main()

我們在子線程調用的后面,添加了 t1.join()。

運行結果:

Thread-1,0Thread-1,1Thread-1,2Thread-1,3Thread-1,4Thread-1,5Thread-1,6Thread-1,7Thread-1,8Thread-1,9MainThread,0MainThread,1MainThread,2

上面的例子中,t1 線程調用了 join() 方法,并且沒有指定具體的 timeout 參數值。

這意味著如果程序想繼續往下執行,必須先執行完 t1 子線程。

以上就是改變 Python 中線程的執行順序的方法的詳細內容,更多關于改變 Python 中線程的執行順序的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩激情综合| 精品一区二区三区免费看| 国产精品片aa在线观看| 欧美日本不卡高清| 久久午夜影院| 日韩在线短视频| 亚洲成人精品| 丝袜a∨在线一区二区三区不卡| 99国产精品| 视频一区在线播放| 日本精品在线播放| 日本久久精品| 国产精品毛片在线| 久久激五月天综合精品| 久久99久久人婷婷精品综合| 女生影院久久| 在线精品亚洲| 国产视频一区二区在线播放| 久久午夜影院| 国产农村妇女精品一二区| 日韩av资源网| 欧美日韩精品免费观看视完整 | 日本亚州欧洲精品不卡| 国产精品久久免费视频| 91精品国产乱码久久久久久久| 视频一区二区三区入口| 另类欧美日韩国产在线| 午夜欧美精品久久久久久久| 日韩av资源网| 久久激情网站| 日韩**一区毛片| 97精品国产| 在线精品福利| 成人免费网站www网站高清| 丝袜美腿成人在线| 欧美天堂视频| 婷婷综合成人| 欧美日韩尤物久久| 国产精品免费精品自在线观看| 国产综合视频| 精品国产乱码久久久| 亚洲综合婷婷| 国产一区日韩一区| 精品一区二区三区四区五区| 日韩中文字幕91| 中文在线中文资源| 日本精品在线播放| 99pao成人国产永久免费视频| 国产精品久久久免费| 一区免费视频| 免费污视频在线一区| 国产伦理久久久久久妇女| 99国产成+人+综合+亚洲欧美| 精品国产乱码久久久久久樱花| 日韩精品一二区| 日韩在线不卡| 国产精品jk白丝蜜臀av小说| 日韩精品一卡二卡三卡四卡无卡| 久久精品导航| 高清一区二区| 国产精品www.| 亚洲精品乱码| 国产精品试看| 欧美日韩激情在线一区二区三区| 日本一二区不卡| 久久永久免费| 欧美日韩亚洲国产精品| 亚洲免费资源| 在线视频免费在线观看一区二区| 国产亚洲一区二区手机在线观看| 欧美精品1区| 国产日韩一区二区三区在线| 亚州国产精品| 亚洲精品自拍| 在线免费观看亚洲| 免费欧美日韩| 99在线观看免费视频精品观看| 免费一区二区三区在线视频| 青青伊人久久| 国产精品自在| 欧美一区免费| 日韩精品成人在线观看| 日韩中文字幕亚洲一区二区va在线 | 亚洲精品福利| 99在线精品免费视频九九视| 精品在线99| 水蜜桃久久夜色精品一区| 国产精品videossex久久发布| 日韩精品免费视频人成| 模特精品在线| 久热精品在线| 日韩中文欧美在线| 国产精品腿扒开做爽爽爽挤奶网站| 91精品在线观看国产| 亚洲www免费| 久久精品在线| 日韩欧美网址| 婷婷综合六月| 成人啊v在线| 久久要要av| 影音国产精品| 婷婷中文字幕一区| 欧美亚洲精品在线| 久久高清免费| 亚洲婷婷在线| 国产精品老牛| 日本中文字幕不卡| 国产欧美一区二区三区米奇| 久久99青青| 高清av不卡| 久久久久国产一区二区| 久久精品中文| 国产亚洲在线观看| 少妇高潮一区二区三区99| 国产日韩精品视频一区二区三区| 国产一精品一av一免费爽爽| 日本电影久久久| 国产欧美日韩在线一区二区| 麻豆免费精品视频| www在线观看黄色| 婷婷国产精品| 日韩中文字幕1| 国产精品一在线观看| 91日韩免费| 99视频精品| 欧美日韩中出| 成人在线免费观看91| 久久中文字幕av| 亚洲午夜久久| 国产福利资源一区| 三上悠亚国产精品一区二区三区| 久久久国产精品一区二区中文| 欧美福利一区| 欧美日韩1区| 日韩视频网站在线观看| 亚洲一区二区动漫| 国产精品网站在线看| 欧美香蕉视频| 免费成人性网站| 国产精品丝袜在线播放| 日韩中文影院| 日韩精品久久久久久| 国产在视频一区二区三区吞精| 亚洲第一区色| 69堂精品视频在线播放| 久久久久久婷| 9色精品在线| 国产欧美一区二区三区国产幕精品| 欧美久久天堂| 蜜桃视频在线观看一区二区| 精品一区91| 99香蕉国产精品偷在线观看| 国产精品主播| 国产亚洲欧洲| 91亚洲人成网污www| 亚洲深深色噜噜狠狠爱网站 | 蜜桃tv一区二区三区| 青青国产精品| 电影天堂国产精品| 久久国产乱子精品免费女| 蜜桃精品在线| 18国产精品| 亚洲少妇自拍| 不卡一二三区| 日本不卡视频在线| 久久久久久久久久久妇女| 国产欧美日韩精品一区二区免费| 成人av动漫在线观看| 蜜桃精品视频| 日本中文字幕视频一区| 视频一区中文| 精品一区二区三区中文字幕| 视频国产精品| 日韩三区在线| 欧美日韩精品一区二区三区在线观看| 伊人久久亚洲| 亚洲婷婷免费| 极品av在线| 国产精品一站二站| 免费国产亚洲视频| 亚洲午夜精品久久久久久app| 国产精品美女久久久久久不卡| 久热re这里精品视频在线6| 久久国产亚洲精品| 国产一区二区三区四区五区传媒| 日本不卡不码高清免费观看| 亚洲女同一区| 精品捆绑调教一区二区三区| 日韩动漫一区| 欧美综合国产| 伊人久久成人| 欧美精品一二| 亚洲高清二区| 天堂资源在线亚洲| 美女网站视频一区| 日韩欧美综合| 国产精品xx| 国产一区一一区高清不卡| 日本欧美大码aⅴ在线播放| 免费人成精品欧美精品|