pythonthread提供了低級(jí)別的、原始的線(xiàn)程以及一個(gè)簡(jiǎn)單的鎖,下面提供一個(gè)python線(xiàn)程線(xiàn)程鎖(thread)學(xué)習(xí)示例,大家參考使用
代碼如下:
#encoding:utf-8
importthread
importtime#一個(gè)用于在線(xiàn)程中執(zhí)行的函數(shù)
deffunc():
foriinrange(5):
print'func'
time.sleep(1)#結(jié)束當(dāng)前線(xiàn)程
#這個(gè)方法與thread.exit_thread()等價(jià)
thread.exit()#當(dāng)func返回時(shí),線(xiàn)程同樣會(huì)結(jié)束#啟動(dòng)一個(gè)線(xiàn)程,線(xiàn)程立即開(kāi)始運(yùn)行
#這個(gè)方法與thread.start_new_thread()等價(jià)
#第一個(gè)參數(shù)是方法,第二個(gè)參數(shù)是方法的參數(shù)
thread.start_new(func,())#方法沒(méi)有參數(shù)時(shí)需要傳入空tuple#創(chuàng)建一個(gè)鎖(locktype,不能直接實(shí)例化)
#這個(gè)方法與thread.allocate_lock()等價(jià)
lock=thread.allocate()#判斷鎖是鎖定狀態(tài)還是釋放狀態(tài)
printlock.locked()#鎖通常用于控制對(duì)共享資源的訪問(wèn)
count=0#獲得鎖,成功獲得鎖定后返回true
#可選的timeout參數(shù)不填時(shí)將一直阻塞直到獲得鎖定
#否則超時(shí)后將返回false
iflock.acquire():
count+=1#釋放鎖
lock.release()#thread模塊提供的線(xiàn)程都將在主線(xiàn)程結(jié)束后同時(shí)結(jié)束
time.sleep(6)
thread模塊提供的其他方法:
thread.interrupt_main():在其他線(xiàn)程中終止主線(xiàn)程。
thread.get_ident():獲得一個(gè)代表當(dāng)前線(xiàn)程的魔法數(shù)字,常用于從一個(gè)字典中獲得線(xiàn)程相關(guān)的數(shù)據(jù)。這個(gè)數(shù)字本身沒(méi)有任何含義,并且當(dāng)線(xiàn)程結(jié)束后會(huì)被新線(xiàn)程復(fù)用。thread還提供了一個(gè)threadlocal類(lèi)用于管理線(xiàn)程相關(guān)的數(shù)據(jù),名為thread._local,threading中引用了這個(gè)類(lèi)。
2025國(guó)考·省考課程試聽(tīng)報(bào)名