python treading模块
python threading模塊
1.Thread類
1.1 構造器傳參
Thread(group=None, target=None, name=None, args=(), kwargs={}, daemon=None)- group:指定的線程組ThreadGroup
- target:捆綁的方法,是run()方法要調用的可調用對象。
- name:線程名稱,默認名為 Thread- N (N=1,2,3…)
- args :給捆綁的方法(target)傳遞的參數元組
- kwargs :給捆綁的方法(target)傳遞的參數字典
- daemon : 顯式設置線程是否為守護進程
1.2方法
start()
作用開啟線程活動,激活線程后,線程對象將執行run()方法體中的操作。
def test(name):for i in range(5):print(name+'\t'+'hello',i)#創建線程并捆綁一個函數來執行線程 thread01 = Thread(target=test, kwargs={'name':'thread01'}) thread01.start()run()
代表線程活動的方法。
#類繼承的方式重新run class mytread(Thread):def __init__(self):super(mytread, self).__init__()#重新Thread的run方法def run(self):for i in range(5):print(self.getName()+'\t'+'hello',i) thread1 = mytread() thread1.start()join(timeout=None)
阻塞當前運行代碼的線程(也就是調用 join的線程),直到被調用 join()的線程終結 。
如下列中:
- 主線程調用了thread1線程的join方法,當前運行線程為主線程。
- 調用者:主線程(因為代碼thread1.join()是在主線程中執行的,所有是主線程的調用thread1的join()方法)
- 被調用者:thread1(thread1線程對象被在主線程中調用了join方法)
- 結果:阻塞主線程,并直到thread1線程執行完成。
getName()
獲取線程名,線程名:只用于識別的字符串。它沒有語義。多個線程可以賦予相同的名稱。 初始名稱由構造函數設置。
setName()
設置線程名。
is_alive()
線程是否還在執行run()中的操作,用來判斷線程是否存活。
isDaemon()
判斷是否為守護線程
setDaemon()
設為守護線程。
1.3 使用
繼承Thread,重新run方法
#類繼承的方式重新run class mytread(Thread):def __init__(self):super(mytread, self).__init__()#重新Thread的run方法def run(self):for i in range(5):print(self.getName()+'\t'+'hello',i) thread1 = mytread() thread1.start() #阻塞當前線程,等待thread1的執行完畢 thread1.join() print('主線程退出')創建Thread,捆綁方法體執行
def test(name):#在這編寫方法體for i in range(5):print(name+'\t'+'hello',i)#創建線程并捆綁一個函數來執行線程 thread01 = Thread(target=test, kwargs={'name':'thread01'}) thread01.start()2. Event類
這是線程之間通信的最簡單機制之一:一個線程發出事件信號,而其他線程等待該信號。而Event就是用來實現事件對象的類。事件對象管理一個內部標志flag。而這個flag代表了事件信號。
一個線程發出事件信號,而其他線程等待該信號。可以說成:一個線程控制flag,而其他線程等待該flag變為true,然后去執行某件事。
2.1 方法
is_set()
當內部標準位flag為ture時返回true,否則返回false。
set()
設置內部標志位flag為true。所有正在等待這個事件的線程將被喚醒。當標志為true時,調用 wait() 方法的線程不會被被阻塞。
clear()
設置內部標志位flag為false。之后調用 wait() 方法的線程將會被阻塞,直到調用 set() 方法將內部標志再次設置為true。
wait(timeout=None)
阻塞線程,直到內部變量為true。
只有內部變量flag為true(不再進行阻塞),并沒有超時,才會返回true。其余情況該方法返回的是false值。
總結
以上是生活随笔為你收集整理的python treading模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快给你的电脑换新吧更换新电脑
- 下一篇: 数据结构(三)--链表