python庫學習筆記(threading庫)
import threading
threading模塊裏提供的類。
1. Thread:表示一個線程的執行的對象。
2. Lock:鎖原語對象
3. Rlock:可重入鎖對象。使單線程可以再次獲得已經獲得的鎖。
4. Condition:條件變量對象。能讓一個線程停下來,等待其他線程滿足了“某個”條件。
5. Event:通用的條件變量。多個線程可以等待某個時間的發生,在事件發生後,所有的線程都被激活。
6. Semaphore:為等待鎖的線程提供一個類似“等候室”的結構
7. Timer:與thread類似,只是它要等待一段時間後才開始運行。
threading的Thread類 裏的方法。
1. Thread.start():開始執行線程。
2. Thread.join(timeout=None):阻塞主程序,直到線程結束,如果給了timeout,則最多阻塞timeout秒。
3. Thread.run():定義線程的功能(一般會被子類重寫)
4. Thread.getName():返回線程的名字。
5. Thread.setName():設置線程的名字。
6. Thread.isAlive():檢查線程是否還在執行。
7. Thread.isDaemon():查看線程是不是守護線程。
8. Thread.setDaemon()
實例:
1 # -*- coding: utf-8 2 import threading 3 from time import ctime, sleep 4 5 def music(func): 6 for i in range(2): 7 print "I was listening to %s. %s" % (func, ctime()) 8 sleep(1) 9 10 def movie(func): 11 for i in range(2):12 print "I was watching the %s. %s" % (func, ctime()) 13 sleep(5) 14 15 #開始創建線程 16 threads = [] 17 t1 = threading.Thread(target=music, args=(u‘愛情買賣‘,)) 18 threads.append(t1) 19 t2 = threading.Thread(target=movie, args=(u‘阿凡達‘,)) 20 threads.append(t2) 21 22 23 if __name__ == ‘__main__‘: 24 for t in threads: 25 t.start() #運行線程 26 t.join() #阻塞主進程,直到第二個線程結束。 27 print u‘over‘, ctime()
如果把第18行代碼放在第20行代碼後面,會出現不一樣的結果。因為第26行代碼中的t.join()只能保證循環中的最後一個線程運行結束,可以為每一個線程都設置一個join()方法。
1 for t in threads: 2 t.join
參考博文:
https://www.cnblogs.com/fnng/p/3670789.html
https://blog.csdn.net/eastmount/article/details/50155353
python庫學習筆記(threading庫)