該模組提供了用於處理多個執行緒(也稱為輕量級程序或任務)的低階原語 - 多個控制線程共享其全域性資料空間。為 了同步,提供了簡單的鎖(也稱為互斥鎖或二進位制訊號量)。
發生執行緒特定錯誤時,會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))
啟動乙個新執行緒並返回其識別符號。執行緒使用引數列表args(必須是元組)執行函式。可選kwargs引數指定關鍵字引數的字典。 當函式返回時,執行緒將以靜默方式退出。當函式以未處理的異常終止時,將列印堆疊跟蹤,然後執行緒退出(但其他執行緒繼續執行)。
引發 systemexit 異常。如果未捕獲時,這將導致執行緒以靜默方式退出。
返回乙個新的鎖定物件。鎖的方法如下所述。鎖最初為解鎖狀態。
返回thread identifier當前執行緒。這是乙個非零整數。它的價值沒有直接意義; 它旨在用作例如索引執行緒特定資料的字典的魔術cookie。當執行緒退出並建立另乙個執行緒時,可以**執行緒識別符號。
返回建立新執行緒時使用的執行緒堆疊大小(以位元組為單位)。可選的size引數指定用於後續建立的執行緒的堆疊大小,並且必須是0(使用平台或配置的預設值)或至少為4096(4kib)的正整數值。 4kib是目前支援的最小堆疊大小值,以保證直譯器本身有足夠的堆疊空間。
這是鎖定物件的型別。
python提供的執行緒模組包含乙個易於實現的鎖定機制,可以實現執行緒之間的同步。通過呼叫lock()方法建立乙個新鎖。 新鎖物件的獲取(阻塞)方法用於強制執行緒同步執行。可選的阻塞引數使您可以控制線程是否等待獲取鎖定。
鎖定物件具有以下方法:
在沒有任何可選引數的情況下,此方法無條件地獲取鎖定,如果有必要,等待它被另乙個執行緒釋放(一次只有乙個執行緒可以獲取鎖定 - 這就是它們存在的原因)。
如果存在整數waitflag
引數,則操作取決於其值:如果它為零,則僅在不等待的情況下立即獲取鎖定時獲取鎖定,而如果它非零,則如上所述無條件地獲取鎖定。
如果浮點超時引數存在且為正,則它指定返回之前的最長等待時間(以秒為單位)。負超時引數指定無限制等待。如果waitflag
為零,則無法指定超時。
true
如果成功獲取鎖定則返回值,否則返回值false
。
釋放鎖定。必須先獲取鎖,但不一定是同乙個執行緒。
返回鎖的狀態:true表示被某個執行緒獲取,false則表示沒有。
除了這些方法之外,還可以通過with語句使用鎖定物件,例如:
import _thread
a_lock = _thread.allocate_lock()
with a_lock:
print(「a_lock is locked while this executes」)
摘抄自: ThreadPoolExecutor 多執行緒
from concurrent.futures import threadpoolexecutor,wait,all completed from queue import queue myqueue queue 佇列,用於儲存函式執行結果。多執行緒的問題之一 如何儲存函式執行的結果。def thr...
c 多線例項
using system using system.threading using system.text namespace controlthread 第二個執行緒正在執行,請輸入 s uspend,r esume,i nterrupt,or e xit.datetime.now.tostrin...
CLLocationManager在多執行緒下使用
似乎定位的返回 呼叫 只能有主線程來呼叫,並且這個物件還必須是在主線程建立的。做過以下實驗 1.子執行緒中 self.locationmanager cllocationmanager alloc init autorelease locationmanager.delegate self loca...