pythonthread提供了低級(jí)別的、原始的線程以及一個(gè)簡(jiǎn)單的鎖,下面提供一個(gè)python線程線程鎖(thread)學(xué)習(xí)示例,大家參考使用
代碼如下:
#encoding:utf-8
importthread
importtime#一個(gè)用于在線程中執(zhí)行的函數(shù)
deffunc():
foriinrange(5):
print'func'
time.sleep(1)#結(jié)束當(dāng)前線程
#這個(gè)方法與thread.exit_thread()等價(jià)
thread.exit()#當(dāng)func返回時(shí),線程同樣會(huì)結(jié)束#啟動(dòng)一個(gè)線程,線程立即開始運(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模塊提供的線程都將在主線程結(jié)束后同時(shí)結(jié)束
time.sleep(6)
thread模塊提供的其他方法:
thread.interrupt_main():在其他線程中終止主線程。
thread.get_ident():獲得一個(gè)代表當(dāng)前線程的魔法數(shù)字,常用于從一個(gè)字典中獲得線程相關(guān)的數(shù)據(jù)。這個(gè)數(shù)字本身沒(méi)有任何含義,并且當(dāng)線程結(jié)束后會(huì)被新線程復(fù)用。thread還提供了一個(gè)threadlocal類用于管理線程相關(guān)的數(shù)據(jù),名為thread._local,threading中引用了這個(gè)類。