1. 程式人生 > 程式設計 >python執行緒裡哪種模組比較適合

python執行緒裡哪種模組比較適合

在Python中可使用的多執行緒模組主要有兩個,thread和threading模組。thread模組提供了基本的執行緒和鎖的支援,建議新手不要使用。threading模組允許建立和管理執行緒,提供了更多的同步原語。

thread模組函式:

  • start_new_thread(function,args[,kwargs]):啟動新的執行緒以執行function,返回執行緒標識。
  • allocate_lock():返回LockType物件。
  • exit():丟擲SystemExit異常,如果沒有被捕獲,執行緒靜默退出。
  • LockType型別鎖物件的方法:
  • acquire([waitflag]):無引數,無條件獲得鎖,如果鎖已經被其他執行緒獲取,則等待鎖被釋放。如果使用整型引數,引數為0,如果鎖可獲取,則獲取且返回True,否則返回False;引數為非0,與無引數相同。
  • locked():返回鎖的狀態,如果已經被獲取,則返回True,否則返回False。
  • release():釋放鎖。只有已經被獲取的鎖才能被釋放,不限於同一個執行緒。
  • threading模組提供了更好的執行緒間的同步機制。threading模組下有如下物件:
  • Thread
  • Lock
  • RLock
  • Condition
  • Event
  • Semaphore
  • BoundedSemaphore
  • Timer
  • threading模組內還有如下的函式:
  • active_count()
  • activeCount():返回當前alive的執行緒數量
  • Condition():返回新的條件變數物件
  • current_thread()
  • currentThread():返回當前執行緒物件
  • enumerate():返回當前活動的執行緒,不包括已經結束和未開始的執行緒,包括主執行緒及守護執行緒。
  • settrace(func):為所有執行緒設定一個跟蹤函式。
  • setprofile(func):為所有純種設定一個profile函式。

內容擴充套件:

Python執行緒模組

常用引數說明

  • target 表示呼叫物件,几子執行緒要執行的的任務
  • name 子執行緒的名稱
  • args 傳入target函式中的位置引數,是一個元組,引數後必須加逗號

常用的方法

  • Thread.star(self)啟動程序
  • Thread.join(self)阻塞程序,主執行緒等待
  • Thread.setDaemon(self,daemoic) 將子執行緒設定為守護執行緒
  • Thread.getName(self.name) 獲取執行緒名稱
  • Thread.setName(self.name) 設定執行緒名稱
import time
from threading import Thread
 
 
def hello(name):
  print('hello {}'.format(name))
  time.sleep(3)
  print('hello bye')
 
def hi():
  print('hi')
  time.sleep(3)
  print('hi bye')
 
if __name__ == '__main__':
 
  hello_thread = Thread(target=hello,args=('wan zong',),name='helloname') #target表示呼叫物件。name是子執行緒的名稱。args 傳入target函式中的位置引數,是個元組,引數後必須加逗號
  hi_thread = Thread(target=hi)
 
  hello_thread.start() #開始執行執行緒任務,啟動程序
  hi_thread.start()
 
  hello_thread.join() #阻塞程序 等到程序執行完成 阻塞呼叫,主執行緒進行等待
  hi_thread.join()
 
  print(hello_thread.getName())
  print(hi_thread.getName()) #會預設匹配名字
 
  hi_thread.setName('hiname')
  print(hi_thread.getName())
 
  print('主執行緒執行完成!')

到此這篇關於python執行緒裡哪種模組比較適合的文章就介紹到這了,更多相關python執行緒用什麼模組好內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!