在介紹
thread
之前,先看一段**,猜猜程式執行完成之後,在控制台上輸出的結果是什麼?
import thread, time
count = 0
def threadtest():
global count
for i in xrange(10000):
count += 1
for i in range(10):
thread.start_new_thread(threadtest, ())
time.sleep(3)
print count
輸出結果:3018
thread.start_new_thread ( function , args [ , kwargs ] )函式將建立乙個新的執行緒,並返回該執行緒的識別符號(識別符號為整數)。引數 function 表示執行緒建立之後,立即執行的函式,引數 args 是該函式的引數,它是乙個元組型別;第二個引數 kwargs 是可選的,它為函式提供了命名引數字典。函式執行完畢之後,執行緒將自動退出。如果函式在執行過程中遇到未處理的異常,該執行緒將退出,但不會影響其他執行緒的執行。 下面是乙個簡單的例子:
import thread, time
def threadfunc(a, b, c, d):
print time.strftime('%h:%m:%s', time.localtime()), a
time.sleep(1)
print time.strftime('%h:%m:%s', time.localtime()), b
time.sleep(1)
print time.strftime('%h:%m:%s', time.localtime()), c
time.sleep(1)
print time.strftime('%h:%m:%s', time.localtime()), d
time.sleep(1)
thread.start_new_thread(threadfunc, (1, 2, 3, 4))
time.sleep(4)
print time.strftime('%h:%m:%s', time.localtime()), 'over'
thread.exit ()結束當前執行緒。呼叫該函式會觸發 systemexit 異常,如果沒有處理該異常,執行緒將結束。
thread.get_ident ()返回當前執行緒的識別符號,識別符號是乙個非零整數。
thread.allocate_lock()
#建立乙個瑣物件
lock.acquire ( [ waitflag ] )
獲取瑣。函式返回乙個布林值,如果獲取成功,返回 true ,否則返回 false 。引數
waitflag
的預設值是乙個非零整數,表示如果瑣已經被其他執行緒占用,那麼當前執行緒將一直等待,只到其他執行緒釋放,然後獲取訪瑣。如果將引數 waitflag 置為 0 ,那麼當前執行緒會嘗試獲取瑣,不管瑣是否被其他執行緒占用,當前執行緒都不會等待.
lock.locked()判斷瑣是否被占用。
lock.release()釋放所占用的瑣
再一次重新編寫剛開始的程式,我們給執行緒加上鎖,**如下:
import thread, time
count = 0
lock = thread.allocate_lock()
def threadtest():
global count, lock
lock.acquire()
print lock.locked()
for i in xrange(1000):
count += 1
lock.release()
for i in range(10):
thread.start_new_thread(threadtest, ())
time.sleep(3)
print count
則執行結果:10*1000 = 10000
python多執行緒模組 threading使用方法
先來看這段 import threading import time def worker print worker time.sleep 1 return for i in xrange 5 t threading.thread target worker t.start 這段 就使用了多執行緒,...
python多執行緒模組threading學習
本文主要介紹threading模組的使用。1.建立乙個threading.thread類的物件,並在初始化函式 init 中傳入可呼叫物件作為執行目標。初始化函式原型以下是threading.thread類的初始化函式原型 definit self,group none,target none,na...
Python多執行緒 threading模組
用threading模組,可以實現python多執行緒程式設計。import threading import time def video secs for i in range secs print 邊看 操.d i time.sleep 1 def dance secs for i in ra...