_thread
--- 線程
該模塊提供了用於處理多個線程(也稱爲輕量級進程或任務)的低級原語 - 多個控制線程共享其全局數據空間。爲 了同步,提供了簡單的鎖(也稱爲互斥鎖或二進制信號量)。
發生線程特定錯誤時,會RuntimeError引發異常。
快速使用示例:
import _thread
import time
def th_func(delay, id):
while True:
time.sleep(delay)
print(‘Running thread %d’ % id)
for i in range(2):
_thread.start_new_thread(th_func, (i + 1, i))
方法
_thread.start_new_thread(function,args [,kwargs])
啓動一個新線程並返回其標識符。線程使用參數列表args(必須是元組)執行函數。可選kwargs參數指定關鍵字參數的字典。 當函數返回時,線程將以靜默方式退出。當函數以未處理的異常終止時,將打印堆棧跟蹤,然後線程退出(但其他線程繼續運行)。
_thread.
exit
()
引發 SystemExit 異常。如果未捕獲時,這將導致線程以靜默方式退出。
_thread.
allocate_lock
()
返回一個新的鎖定對象。鎖的方法如下所述。鎖最初爲解鎖狀態。
_thread.
get_ident
()
返回thread identifier當前線程。這是一個非零整數。它的價值沒有直接意義; 它旨在用作例如索引線程特定數據的字典的魔術cookie。當線程退出並創建另一個線程時,可以回收線程標識符。
_thread.
stack_size
([size])
返回創建新線程時使用的線程堆棧大小(以字節爲單位)。可選的size參數指定用於後續創建的線程的堆棧大小,並且必須是0(使用平臺或配置的默認值)或至少爲4096(4KiB)的正整數值。 4KiB是目前支持的最小堆棧大小值,以保證解釋器本身有足夠的堆棧空間。
對象
_thread.LockType
這是鎖定對象的類型。
Lock 類
class Lock
Python提供的線程模塊包含一個易於實現的鎖定機制,可以實現線程之間的同步。通過調用Lock()方法創建一個新鎖。 新鎖對象的獲取(阻塞)方法用於強制線程同步運行。可選的阻塞參數使您可以控制線程是否等待獲取鎖定。
方法
鎖定對象具有以下方法:
lock.
acquire
(waitflag = 1,timeout = -1)
在沒有任何可選參數的情況下,此方法無條件地獲取鎖定,如果有必要,等待它被另一個線程釋放(一次只有一個線程可以獲取鎖定 - 這就是它們存在的原因)。
如果存在整數 waitflag
參數,則操作取決於其值:如果它爲零,則僅在不等待的情況下立即獲取鎖定時獲取鎖定,而如果它非零,則如上所述無條件地獲取鎖定。
如果浮點超時參數存在且爲正,則它指定返回之前的最長等待時間(以秒爲單位)。負超時參數指定無限制等待。如果 waitflag
爲零,則無法指定超時。
True
如果成功獲取鎖定則返回值,否則返回值 False
。
lock.
release
()
釋放鎖定。必須先獲取鎖,但不一定是同一個線程。
lock.
locked
()
返回鎖的狀態:True表示被某個線程獲取,False則表示沒有。
除了這些方法之外,還可以通過with語句使用鎖定對象,例如:
import _thread
a_lock = _thread.allocate_lock()
with a_lock:
print(“a_lock is locked while this executes”)
摘抄自:https://mpython.readthedocs.io/zh/master/library/micropython/_thread.html