python關於執行緒的一點介紹

ckxllf發表於2019-08-29

  Python中使用執行緒有兩種方式:函式或者用類來包裝執行緒物件。

  函式式:呼叫 _thread 模組中的start_new_thread()函式來產生新執行緒。語法如下:

  _thread.start_new_thread ( function, args[, kwargs] )

  引數說明:

  function - 執行緒函式。

  args - 傳遞給執行緒函式的引數,他必須是個tuple型別。

  kwargs - 可選引數。

  

  執行緒模組

  _thread 提供了低階別的、原始的執行緒以及一個簡單的鎖,它相比於 threading 模組的功能還是比較有限的。

  threading 模組除了包含 _thread 模組中的所有方法外,還提供的其他方法:

  threading.currentThread(): 返回當前的執行緒變數。

  threading.enumerate(): 返回一個包含正在執行的執行緒的list。正在執行指執行緒啟動後、結束前,不包括啟動前和終止後的執行緒。

  threading.activeCount(): 返回正在執行的執行緒數量,與len(threading.enumerate())有相同的結果。

  除了使用方法外,執行緒模組同樣提供了Thread類來處理執行緒,Thread類提供了以下方法:

  run(): 用以表示執行緒活動的方法。

  start():啟動執行緒活動。

  join([time]): 等待至執行緒中止。這阻塞呼叫執行緒直至執行緒的join() 方法被呼叫中止-正常退出或者丟擲未處理的異常-或者是可選的超時發生。(等待所有子執行緒執行結束,主執行緒才結束)

  isAlive(): 返回執行緒是否活動的。

  getName(): 返回執行緒名。

  setName(): 設定執行緒名。

  使用 threading 模組建立執行緒

  我們可以透過直接從 threading.Thread 繼承建立一個新的子類,並例項化後呼叫 start() 方法啟動新執行緒,即它呼叫了執行緒的 run() 方法:

  呼叫類的內部方法:self.

   無錫人流醫院哪家好

  執行緒同步

  如果多個執行緒共同對某個資料修改,則可能出現不可預料的結果,為了保證資料的正確性,需要對多個執行緒進行同步。

  使用 Thread 物件的 Lock 和 Rlock 可以實現簡單的執行緒同步,這兩個物件都有 acquire 方法和 release 方法,對於那些需要每次只允許一個執行緒操作的資料,可以將其操作放到 acquire 和 release 方法之間。如下:

  多執行緒的優勢在於可以同時執行多個任務(至少感覺起來是這樣)。但是當執行緒需要共享資料時,可能存在資料不同步的問題。

  

  


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2655409/,如需轉載,請註明出處,否則將追究法律責任。

相關文章