成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

Python多線程Threading、子線程與守護線程實例詳解

瀏覽:115日期:2022-08-01 13:48:34

本文實例講述了Python多線程Threading、子線程與守護線程。分享給大家供大家參考,具體如下:

線程與進程: 線程對于進程來說,就好似工廠里的工人,分配資源是分配到工廠,工人再去處理。 線程是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。 在單個程序中同時運行多個線程完成不同的工作,稱為多線程 對于IO密集型的程序來說,多線程可以利用讀IO的時間去做其他事【IO并不占用CPU,這就好像A買個一份外賣,他只需要等著送過來然后敲A家的門就行了】; 而對于CPU密集型的程序來說,多線程的效率就不是很高了【CPU由于要計算,切換之間要恢復之前的現場消耗相對較大,比如我同時做幾份作業,一份作業做十分鐘,假如十分鐘做不完一份作業,那么我后面再回頭做的時候,我就要好好想想剛才做到哪,剛才想到哪】

補充:IO需要CPU嗎?知乎:https://www.zhihu.com/question/27734728

Python多線程Threading、子線程與守護線程實例詳解

線程Threading:

python中多線程需要使用threading模塊

線程的創建與運行:

1.直接調用threading的Thread類:

線程的創建:線程對象=thread.Thread(target=函數名,args=(參數))【補充,由于args是一個元組,單個參數時要加“,”】

線程的啟動:線程對象.start(),調用start(),那么線程對象會自動去調用thread.Thread中的run()

讓主線程等待其余線程結束:線程對象.join(),加了join之后,相當于阻塞了主線程,主線程只有當join的線程結束后才會向下執行

import threading,timedef run(n): time.sleep(1) print('task ',n)t1=threading.Thread(target=run,args=('t1',))t2 = threading.Thread(target=run,args=('t2',))start_time=time.time()#開始時間t1.start()t2.start()##因為是獨立線程,如果想要主線程等待其他線程運行完畢,需要使用joint1.join()t2.join()spend_time=time.time()-start_timeprint(spend_time)##1.0多,說明是并行的結果

附加說明--join是阻塞等待:

import threading,timeclass MyTread(threading.Thread): def __init__(self,name): super(MyTread,self).__init__()#調用父類的__init__() self.name=name def run(self):#重寫方法,按自己的要求去寫 time.sleep(1) print('run in task',self.name,threading.current_thread(),threading.active_count())t1=MyTread('t1')t2=MyTread('t2')start_time=time.time()t1.start()t2.start()t1.join()t2.join()time.sleep(1)###主線程等待其余線程結束print(time.time()-start_time)#結果是2.0多,證明是join是相當于阻塞了主線程的執行,只有當線程結束后才會向下執行

2.繼承threading的Thread類:

繼承threading的Thread類的類要主要做兩件事:

1.如果不做自定義變量的初始化,那么可以直接使用繼承的父類的__init__(),如果需要做自定義變量的初始化,則需要先調用父類的__init__()【否則需要自己填寫線程初始化相關的參數】

2.重寫run,雖然繼承了父類的run,但實際上如果不重寫,那么我們繼承threading的Thread類又有什么意義呢?為什么不直接調用threading的Thread類

import threading,timeclass MyTread(threading.Thread): def __init__(self,name): super(MyTread,self).__init__()#調用父類的__init__() self.name=name def run(self):#重寫方法,按自己的要求去寫 time.sleep(1) print('run in task',self.name,threading.current_thread(),threading.active_count())t1=MyTread('t1')t2=MyTread('t2')start_time=time.time()t1.start()t2.start()###主線程等待其余線程結束t1.join()t2.join()print(time.time()-start_time)#結果是1.0多,證明是并行的 子線程: 由一個線程啟動的線程可以成為它的子線程,A啟動B,B是A的子線程,A是B的父線程 線程的幾個常用函數: threading.current_thread():

返回當前正在運行的線程對象

Python多線程Threading、子線程與守護線程實例詳解threading.active_count():

返回當前進程中的存活的線程對象數

Python多線程Threading、子線程與守護線程實例詳解

線程對象.isAlive()方法判斷線程是否存活

Python多線程Threading、子線程與守護線程實例詳解

getName(): 返回線程名。 setName(): 設置線程名。

Python多線程Threading、子線程與守護線程實例詳解

get_ident():獲取當前線程ID。

守護線程: 守護線程是起到輔助功能的,就好像魔法師放禁咒總要騎士保護一樣【魔法師只需要關系自己的任務,保護他的任務交給守護者】 而守護線程與主線程的關系呢,就好像備胎跟女神,去買東西的話,備胎要一直在外面等女神【守護線程運行結束就狗帶,但不影響主進程結束,由主線程決定運行時間】,女神不需要等待備胎【主線程結束,守護線程也要結束,不管自身任務是否完成】 與join的區別:join是阻塞等待,守護線程是并行的等待 設置守護線程:線程對象.setDaemon(True)【注意!!!!!設置守護線程必須要在start()前面,不然會報錯】

下面的代碼顯示了主線程并不會等待其守護線程結束:

import threading,timeclass MyTread(threading.Thread): def __init__(self,name): super(MyTread,self).__init__() self.name=name def run(self): print('守護線程已經啟動',self.name) time.sleep(1) print('run in task',self.name,threading.current_thread(),threading.active_count())t1=MyTread('t1')t1.setDaemon(True)t2=MyTread('t2')t2.setDaemon(True)start_time=time.time()#開始時間t1.start()t2.start()spend_time=time.time()-start_timeprint(spend_time)##0.0多,而且三個線程都執行完畢了,說明這個是并行的等待

Python多線程Threading、子線程與守護線程實例詳解

讓主線程sleep一下,顯示一下如果主線程要等待守護線程,那么是并行的等待:

import threading,timeclass MyTread(threading.Thread): def __init__(self,name): super(MyTread,self).__init__() self.name=name def run(self): print('守護線程已經啟動',self.name) time.sleep(1) print('run in task',self.name,threading.current_thread(),threading.active_count())t1=MyTread('t1')t1.setDaemon(True)t2=MyTread('t2')t2.setDaemon(True)start_time=time.time()#開始時間t1.start()t2.start()time.sleep(2)spend_time=time.time()-start_timeprint(spend_time)##2.0多,而且三個線程都執行完畢了,說明這個是并行的等待

Python多線程Threading、子線程與守護線程實例詳解

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python進程與線程操作技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》、《Python+MySQL數據庫程序設計入門教程》及《Python常見數據庫操作技巧匯總》

希望本文所述對大家Python程序設計有所幫助。

標簽: Python 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美美女视频在线观看| 国内外成人免费视频| 一区二区三区毛片| 国产成人在线视频播放| 国产精品久久7| 欧美日韩国产一级| 亚洲欧洲三级电影| 韩国三级在线一区| 最新日韩av| www激情久久| 午夜国产精品一区| 国产福利精品一区| 国产手机视频一区二区| 精品久久久久久久久久久院品网| 一级做a爱片久久| 成人理论电影网| 久久蜜桃精品| 国产亚洲短视频| 秋霞电影网一区二区| 国内揄拍国内精品久久| 欧美三级电影精品| 中文一区二区完整视频在线观看| 日本美女视频一区二区| 国产精品s色| 欧美一区二区免费观在线| 亚洲图片一区二区| 欧美日韩国产高清| 欧美一区二区精品在线| 亚洲成人综合在线| 国语自产精品视频在线看8查询8| 91精品欧美一区二区三区综合在| 亚洲欧美一区二区三区孕妇| 一区二区三区91| 欧美va天堂| 日韩一区二区电影在线| 日本午夜精品一区二区三区电影| 伊人久久婷婷色综合98网| 日韩亚洲欧美在线| 亚洲国产视频直播| 欧美日韩亚洲一区在线观看| 日韩欧美国产麻豆| 蜜臀久久99精品久久久久宅男| 影音欧美亚洲| 2020国产精品自拍| 韩国av一区二区三区在线观看| 免费看的黄色欧美网站| 中文字幕一区三区| 国产a视频精品免费观看| 欧美自拍偷拍一区| 婷婷亚洲久悠悠色悠在线播放| 一区二区在线不卡| 国产视频不卡一区| 成人精品gif动图一区| 欧美三级日韩三级| 日韩av一级电影| av中文字幕不卡| 日韩欧美一区电影| 男女激情视频一区| 亚洲在线日韩| 国产精品视频你懂的| a级精品国产片在线观看| 欧美性色黄大片手机版| 亚洲黄色免费网站| 在线看片一区| 中文字幕日韩一区| 久久久夜夜夜| 日韩国产欧美一区二区三区| 性色av一区二区怡红| 一区二区国产视频| 在线看无码的免费网站| 国产精品的网站| 国内在线观看一区二区三区| 中文字幕成人av| 国产在线精品二区| 中文欧美字幕免费| 欧美日韩国产一区精品一区| 国产精品视频麻豆| 欧美日韩亚洲三区| 最新日韩在线视频| 国产日韩精品一区观看| 一区二区在线电影| 国产日韩欧美一区二区三区四区| 一区二区三区四区在线免费观看| 99热这里只有精品8| 波多野结衣在线一区| 精品88久久久久88久久久| 成人动漫中文字幕| 欧美一级在线观看| 成人高清视频在线| 国产精品久久福利| 亚洲欧美精品| 天堂影院一区二区| 色综合久久久久综合体| 日韩黄色免费网站| 7777女厕盗摄久久久| 成人免费高清在线观看| xfplay精品久久| 欧美jizzhd精品欧美巨大免费| 日本一区二区免费在线观看视频 | 久久精品盗摄| 日韩av电影一区| 91久久精品一区二区三区| 裸体一区二区三区| 91麻豆精品国产91久久久久久| 国产寡妇亲子伦一区二区| 精品国产免费人成在线观看| 欧美+日本+国产+在线a∨观看| 亚洲国产成人一区二区三区| 亚洲毛片av| 日本欧美韩国一区三区| 4438x亚洲最大成人网| yourporn久久国产精品| 中文字幕一区二区三区视频| 免费在线成人| 蜜臀av一级做a爰片久久| 日韩一区二区免费在线电影 | 欧美在线播放| 欧美在线黄色| 一区二区福利| 99r国产精品| 亚洲性图久久| 久久久天堂av| 欧美日本一区二区三区| 色哦色哦哦色天天综合| 久久网这里都是精品| 一区二区三区高清在线| 成人av在线资源网| 一区二区免费在线视频| 一区二区三区中文字幕电影| 欧美人与禽猛交乱配| 日韩亚洲欧美中文三级| 成av人片一区二区| 另类中文字幕网| 亚洲人成网站在线| 26uuu成人网一区二区三区| 91国偷自产一区二区三区成为亚洲经典| 欧美三区在线| 51精品视频一区二区三区| 日本一区二区三区免费乱视频| 一区二区激情小说| 丝袜美腿亚洲色图| 国产在线观看一区二区| 欧美激情1区2区| 久久久人人人| 日本一区二区久久| 亚洲色图第一区| 91年精品国产| 欧美精品久久一区| 欧美成人中文| 欧美日韩亚洲一区二区三区在线| 国产成人超碰人人澡人人澡| 久久99精品久久久| 五月天国产精品| 亚洲国产乱码最新视频| 最新成人av在线| 欧美国产97人人爽人人喊| 精品国产伦一区二区三区免费| 欧美日韩国产精品自在自线| 一本大道久久a久久精二百 | 蜜桃久久久久久| 天堂蜜桃一区二区三区| 亚洲成人一二三| 亚洲午夜免费电影| 亚洲国产精品自拍| 亚洲国产精品久久久久婷婷884| 亚洲麻豆国产自偷在线| 综合色天天鬼久久鬼色| 欧美经典一区二区| 中文字幕第一页久久| 国产欧美一区在线| 亚洲国产高清aⅴ视频| 国产午夜精品一区二区| 久久久久久久综合| 欧美不卡在线视频| 精品国产亚洲在线| 欧美大片在线观看一区二区| 日韩视频永久免费| 欧美一区二区三区视频在线 | 91精品午夜视频| 3751色影院一区二区三区| 久久综合福利| 在线看不卡av| 久久免费99精品久久久久久| 久久99伊人| 久久婷婷丁香| 欧洲色大大久久| 在线精品观看国产| 亚洲性感美女99在线| 欧美特黄一级| 91麻豆国产在线观看| 99久久夜色精品国产网站| 91免费看片在线观看| 91麻豆国产香蕉久久精品| 欧美激情视频一区二区三区免费| 成人高清在线视频| 色综合天天做天天爱| 欧美久久视频| 日韩午夜av| 免费亚洲婷婷| 日本精品裸体写真集在线观看|