1. 程式人生 > >python庫學習筆記(threading庫)

python庫學習筆記(threading庫)

condition pre ctime IT 程序 rlock HR mov 實例

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()

: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 uover, 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庫)