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