python中threading超執行緒用法執行個體分析

來源:互聯網
上載者:User
本文執行個體講述了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程式設計有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.