1. Thread:表示一個線程的執行的對象。html
2. Lock:鎖原語對象app
3. Rlock:可重入鎖對象。使單線程能夠再次得到已經得到的鎖。spa
4. Condition:條件變量對象。能讓一個線程停下來,等待其餘線程知足了「某個」條件。.net
5. Event:通用的條件變量。多個線程能夠等待某個時間的發生,在事件發生後,全部的線程都被激活。線程
6. Semaphore:爲等待鎖的線程提供一個相似「等候室」的結構code
7. Timer:與thread相似,只是它要等待一段時間後纔開始運行。htm
1. Thread.start():開始執行線程。對象
2. Thread.join(timeout=None):阻塞主程序,直到線程結束,若是給了timeout,則最多阻塞timeout秒。blog
3. Thread.run():定義線程的功能(通常會被子類重寫)進程
4. Thread.getName():返回線程的名字。
5. Thread.setName():設置線程的名字。
6. Thread.isAlive():檢查線程是否還在執行。
7. Thread.isDaemon():查看線程是否是守護線程。
8. Thread.setDaemon():True爲設置守護線程,False就不是,必定要在start()方法前調用。
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