python庫學習筆記(threading庫)

import threading

threading模塊裏提供的

  1.  Thread:表示一個線程的執行的對象。html

  2.  Lock:鎖原語對象app

  3.  Rlock:可重入鎖對象。使單線程能夠再次得到已經得到的鎖。spa

  4.  Condition:條件變量對象。能讓一個線程停下來,等待其餘線程知足了「某個」條件。.net

  5.  Event:通用的條件變量。多個線程能夠等待某個時間的發生,在事件發生後,全部的線程都被激活。線程

  6.  Semaphore:爲等待鎖的線程提供一個相似「等候室」的結構code

  7.  Timer:與thread相似,只是它要等待一段時間後纔開始運行。htm

threading的Thread類裏的方法。

  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

相關文章
相關標籤/搜索