摘要:上一篇文章線程專題多線程共享全局變量下一篇文章線程專題對象對象對象對象類用于表示多帶帶的控制線程。線程啟動時(shí)將調(diào)用此方法。阻塞線程,等待直到線程終止或者出現(xiàn)超時(shí)為止。當(dāng)不存在任何任何活動的非后臺進(jìn)程時(shí),整個程序會退出。
上一篇文章:Python線程專題2:多線程共享全局變量Thread對象
下一篇文章:Python線程專題4:Timer對象、Lock對象、Rlock對象
Thread類用于表示多帶帶的控制線程。
語法:t=Thread(group=None,target=None,name=None,args=(),kwargs={}) 創(chuàng)建一個新的Thread實(shí)例:t group:為以后擴(kuò)張保留的,默認(rèn)為None target:一個可調(diào)用對象,線程啟動時(shí),run()方法將調(diào)用此對象 name:線程名稱,默認(rèn)創(chuàng)建一個“Thread-N”格式的唯一名稱。 args:傳遞給target函數(shù)的參數(shù)元祖 kwargs:傳遞給target的關(guān)機(jī)字參數(shù)的字典。常用屬性于方法
t.start():通過在一個多帶帶的控制線程中調(diào)用run(),啟動線程,此方法只能被調(diào)用一次。 t.run():線程啟動時(shí)將調(diào)用此方法。默認(rèn)情況下,他會調(diào)用目標(biāo)函數(shù)target。還可以在Thread的子類中重新定義此方法。 t.join([timeout]):阻塞線程,等待直到線程終止或者出現(xiàn)超時(shí)為止。timeout是以秒為單位的超時(shí)時(shí)間。 線程啟動之前不能調(diào)用此方法,否則會報(bào)錯。 t.is_alive:如果線程是活動的,返回True,否則返回False,從start()返回的那一刻開始,線程就是活動的, 直到run()方法終止為止。 t.name:線程名稱,這個字符串用于唯一標(biāo)識,可以根據(jù)需要將它更改為更有意義的值, t.ident:整數(shù)線程標(biāo)識符,如果線程尚未啟動,它的值為None。 t.daemon:如果線程是后臺線程,該值為True,否則未False。當(dāng)不存在任何任何活動的非后臺進(jìn)程時(shí),整個程序會退出。實(shí)例1:利用Thread對象,簡單創(chuàng)建一個線程,并啟動一個函數(shù)
#利用Thread對象,簡單創(chuàng)建一個線程,并啟動一個函數(shù) from threading import Thread import time def mark(interval): print("循環(huán)等待時(shí)間時(shí)間%d,等待前時(shí)間:%s"%(interval,time.ctime())) time.sleep(interval) print("等待后的時(shí)間:%s"%time.ctime()) if __name__=="__main__": t=Thread(target=mark,args=(3,)) t.daemon=False#設(shè)置為非后臺線程,不然會看不到自線程打印效果主線程就直接關(guān)閉了 #下面一句會報(bào)錯,必須在start()方法之后調(diào)用 #t.join(3) t.start() #下面語句也會報(bào)錯,因?yàn)閟tart只能調(diào)用一次 #t.start() print("end")
代碼:
#通過繼承Thread,實(shí)現(xiàn)線程類 from threading import Thread import time class MyThread(Thread): def __init__(self,interval): #下面語句用來調(diào)用基類方法,必須調(diào)用 Thread.__init__(self) self.daemon=False self.interval=interval def run(self): print("循環(huán)等待時(shí)間時(shí)間%d,等待前時(shí)間:%s" % (self.interval, time.ctime())) time.sleep(self.interval) print("等待后的時(shí)間:%s" % time.ctime()) if __name__=="__main__": t=MyThread(3) t.start() #為了方便查看打印效果,加了一秒延遲 time.sleep(1) print("end")
結(jié)果:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/42393.html
摘要:上一篇文章線程專題多線程使用的必要性下一篇文章線程專題對象在一個進(jìn)程內(nèi)的所有線程共享全局變量。但多線程對全局變量的更改會導(dǎo)致變量值得混亂。 上一篇文章: Python線程專題1:多線程使用的必要性下一篇文章:Python線程專題3:thread對象 在一個進(jìn)程內(nèi)的所有線程共享全局變量。但多線程對全局變量的更改會導(dǎo)致變量值得混亂。 實(shí)例:驗(yàn)證同一個進(jìn)程內(nèi)所有線程共享全局變量 代碼: #...
摘要:上一篇文章進(jìn)程專題完結(jié)篇多進(jìn)程處理的一般建議下一篇文章線程專題多線程使用的必要性進(jìn)程線程進(jìn)程能夠完成多任務(wù),比如在一個電腦上可以運(yùn)行多個軟件。由于占用資源少,也使得多線程程序并發(fā)比較高。 上一篇文章:Python進(jìn)程專題完結(jié)篇:多進(jìn)程處理的一般建議下一篇文章:Python線程專題1:多線程使用的必要性 進(jìn)程VS線程 進(jìn)程:能夠完成多任務(wù),比如在一個電腦上可以運(yùn)行多個軟件。線程:也能夠...
摘要:語法創(chuàng)建定時(shí)器對象,在秒后運(yùn)行函數(shù),和提供傳遞給的參數(shù)和關(guān)鍵字參數(shù)。在調(diào)用方法后才能啟動計(jì)定時(shí)器。如果函數(shù)還未執(zhí)行,取消定時(shí)器。否則,鎖將保持已鎖定狀態(tài)。 上一篇文章:Python線程專題3:thread對象下一篇文章:Python線程專題5:信號量與有邊界的信號量 Timer對象、Lock對象、Rlock對象 Timer對象 Timer對象用于在稍后的某個時(shí)間執(zhí)行一個函數(shù)。 語法:...
摘要:上一篇文章線程專題使用鎖的注意事項(xiàng)下一篇文章線程專題多線程按順序執(zhí)行線程沒有任何方法可用于強(qiáng)制終止或掛起。實(shí)用工具函數(shù)函數(shù)名解釋返回當(dāng)前活動的對象數(shù)量。 上一篇文章:Python線程專題8:使用鎖的注意事項(xiàng)下一篇文章:Python線程專題10:queue、多線程按順序執(zhí)行 線程沒有任何方法可用于強(qiáng)制終止或掛起。這是設(shè)計(jì)上的原因,因?yàn)榫帉懢€程程序本身十分復(fù)雜。例如:如果某個線程已經(jīng)獲取...
摘要:有邊界的信號量語法創(chuàng)建一個新的有邊界信號量。是計(jì)數(shù)器的初始值,如果忽略,將默認(rèn)為信號量與有邊界的信號量的區(qū)別的工作方式與完全相同,但操作的次數(shù)不能超過的操作次數(shù)。信號量與互斥鎖的微妙差別信號量可用于發(fā)送信號。 上一篇文章:Python線程專題4:Timer對象、Lock對象、Rlock對象下一篇文章:Python線程專題6:事件 信號量與有邊界的信號量 信號量是一個基于計(jì)數(shù)器的同步原...
閱讀 2883·2021-09-22 15:20
閱讀 2958·2021-09-22 15:19
閱讀 3448·2021-09-22 15:15
閱讀 2382·2021-09-08 09:35
閱讀 2373·2019-08-30 15:44
閱讀 3004·2019-08-30 10:50
閱讀 3707·2019-08-29 16:25
閱讀 1586·2019-08-26 13:55