本文執行個體講述了python中threading超執行緒用法。分享給大家供大家參考。具體分析如下:
threading基於Java的執行緒模式設計。鎖(Lock)和條件變數(Condition)在Java中是對象的基本行為(每一個對象都內建了鎖和條件變數),而在Python中則是獨立的對象。Python Thread提供了Java Thread的行為的子集;沒有優先順序、線程組,線程也不能被停止、暫停、恢複、中斷。Java Thread中的部分被Python實現了的靜態方法在threading中以模組方法的形式提供。
threading 模組提供的常用方法:
threading.currentThread(): 返回當前的線程變數。
threading.enumerate(): 返回一個包含正在啟動並執行線程的list。正在運行指線程啟動後、結束前,不包括啟動前和終止後的線程。
threading.activeCount(): 返回正在啟動並執行線程數量,與len(threading.enumerate())有相同的結果。
threading模組提供的類:
Thread, Lock, Rlock, Condition, [Bounded]Semaphore, Event, Timer, local.
Thread是線程類,與Java類似,有兩種使用方法,直接傳入要啟動並執行方法或從Thread繼承並覆蓋run():
# encoding: UTF-8import threading# 方法1:將要執行的方法作為參數傳給Thread的構造方法def func(): print 'func() passed to Thread't = threading.Thread(target=func)t.start()# 方法2:從Thread繼承,並重寫run()class MyThread(threading.Thread): def run(self): print 'MyThread extended from Thread't = MyThread()t.start()
構造方法:
Thread(group=None, target=None, name=None, args=(), kwargs={})
group: 線程組,目前還沒有實現,庫引用中提示必須是None;
target: 要執行的方法;
name: 線程名;
args/kwargs: 要傳入方法的參數。
執行個體方法:
isAlive(): 返回線程是否在運行。正在運行指啟動後、終止前。
get/setName(name): 擷取/設定線程名。
is/setDaemon(bool): 擷取/設定是否守護線程。初始值從建立該線程的線程繼承。當沒有非守護線程仍在運行時,程式將終止。
start(): 啟動線程。
join([timeout]): 阻塞當前上下文環境的線程,直到調用此方法的線程終止或到達指定的timeout(選擇性參數)。
一個使用join()的例子:
# encoding: UTF-8import threadingimport timedef context(tJoin): print 'in threadContext.' tJoin.start() # 將阻塞tContext直到threadJoin終止。 tJoin.join() # tJoin終止後繼續執行。 print 'out threadContext.'def join(): print 'in threadJoin.' time.sleep(1) print 'out threadJoin.'tJoin = threading.Thread(target=join)tContext = threading.Thread(target=context, args=(tJoin,))tContext.start()
運行結果:
in threadContext.
in threadJoin.
out threadJoin.
out threadContext.
希望本文所述對大家的Python程式設計有所協助。