Python多線程4:_thread

來源:互聯網
上載者:User

標籤:python   程式設計語言   

_thread模組是threading模組的基礎模組,為多線程提供了低層級的基元(也稱為輕量級進程或任務)。為了同步,簡單的鎖(也叫做互斥鎖或二元訊號量)被提供。threading模組在該模組的基礎上提供了更易使用並且更進階別的線程API。

該模組支援Windows、Linux、SGI IRIX、Solaris 2.x、以及任何實現了POSIX線程的系統。

_thread模組
它定義了如下的常量和函數:


exception _thread.error
線程錯誤。從3.3版本呢開始相當於RuntimeError。

_thread.LockType 
鎖物件類型。

_thread.start_new_thread(function, args[, kwargs])
開始一個新的線程並返回它的標識符。線程使用參數args(必須是一個元組)執行function函數。選擇性參數kwargs制定了一個參數字典。當函數返回時,線程退出。當函數異常終止時,一個棧軌跡被列印然後線程退出(但是其它線程繼續執行)。

_thread.interrupt_main()
在主線程拋出一個KeyboardInterrupt異常。一個子線程能用這個函數中斷主線程。

_thread.exit()
拋出SystemExit異常。如果不被捕獲,將導致線程退出。

_thread.allocate_lock()
返回一個新的鎖對象。鎖的方法在下一節講述。鎖初始處於未鎖狀態。

_thread.get_ident()
返回當前線程的“線程標識符”。這是一個非0整數。它的值沒有直接的含義;他被作為魔法餅乾使用,例如:索引特定線程資料的字典資訊。線程標識符會被迴圈使用。

_thread.stack_size([size])
返回線程棧的大小,當建立新線程的時候使用。選擇性參數size指定接下來建立線程需要的棧大小,必須是0(用平台或者配置預設)或者一個最小32768(32KiB)的正整數,如果改變線程棧大小不被支援,一個RuntimeError異常被拋出;如果指定的棧大小是無效的,一個ValueError被拋出並且棧大小不被修改。32KiB是當前支援的最小的棧大小,為解譯器自身保證足夠的棧空間。注意,一些平台對棧大小的值有特殊的限制,例如要求最小棧大小大於32KiB,或者要求必須分配系統記憶體頁大小的倍數(參考平台文檔,頁大小通常是4KiB)。在以下平台可用:Windows、帶有POSIX線程的系統。

_thread.TIMEOUT_MAX
Lock.acquire()的timeout參數允許的最大值。若指定的值超過該值,則拋出OverflowError。
Lock對象
Lock對象包含下面的方法。


lock.acquire(waitflag=1, timeout=-1)
不帶參數的情況下,該方法無條件地請求鎖,如有必要,線程將等待直到其它線程釋放鎖(一次僅一個線程能擷取鎖)。
如果整數參數waitflag被設定,行為將依賴該參數的值:如果為0,鎖將不等待立即返回,如果為非0,則鎖則無條件地等待。
如果浮點型參數timeout被設定並且大於0,它指定等待的最大秒數。一個負的timeout表示永久等待。如果waitflag為0,你不能指定timeout。
如果鎖擷取成功,則返回True,否則,返回False。
從3.2版開始,acquire能被POSIX的訊號中斷。

lock.release()
釋放鎖,鎖必須先被擷取,但不要求是同一個線程。

lock.locked()
返回鎖的狀態:如果已經被某個線程擷取,則返回True,否則返回False。

對於這些方法,也能通過with語句來使用,例如:
import _threada_lock = _thread.allocate_lock()with a_lock:    print("a_lock is locked while this executes")

Python多線程4:_thread

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.