threading.event可以使乙個執行緒等待其他執行緒的通知。其內建了乙個標誌,初始值為false。執行緒通過wait()方法進入等待狀態,直到另乙個執行緒呼叫set()方法將內建標誌設定為true時,event通知所有等待狀態的執行緒恢復執行。還可以通過isset()方法查詢envent物件內建狀態的當前值。
import threading
import random
import time
class mythread(threading.thread):
def __init__(self,threadname,event):
threading.thread.__init__(self,name=threadname)
self.threadevent=event
def run(self):
print '%s is ready'%self.name
self.threadevent.wait()
print "%s run"%self.name
sinal=threading.event()
for i in range(10):
t=mythread(str(i),sinal)
t.start()
sinal.set()
執行緒的合併:
python的thread類中還提供了join()方法,使得乙個執行緒可以等待另乙個執行緒執行結束後再繼續執行。這個方法還可以設定乙個timeout引數,避免無休止的等待。因為兩個執行緒順序完成,看起來象乙個執行緒,所以稱為執行緒的合併。乙個例子:
import threading
import random
import time
class mythread(threading.thread):
def run(self):
wait_time=random.randrange(1,10)
print '%s will wait %d seconds'%(self.name,wait_time)
time.sleep(wait_time)
print "%s finished"%self.name
if __name__=='__main__':
thrads=
for i in range(5):
t=mythread()
t.start()
print 'main thread is waiting for exit....'
for t in threads:
t.join(1)
print 'main thread finished'
後台執行緒:
import threading
import random
import time
class mythread(threading.thread):
def run(self):
wait_time=random.randrange(1,10)
print '%s will wait %d seconds'%(self.name,wait_time)
time.sleep(wait_time)
print '%s finished'%self.name
if __name__=='__main__':
print 'main thread is waitting for exit..'
for i in range(5):
t=mythread()
t.setdaemon(true)
t.start()
print 'main thread finished'
後台執行緒 守護執行緒
有一種執行緒,它是在後台執行的,它的任務是為其他的執行緒提供服務,這種執行緒被稱為 後台執行緒 daemon thread 又稱為 守護執行緒 典型的後台執行緒是定時器 timer 執行緒,他負責將固定的時間間隔傳送給其他的執行緒。後台執行緒經常用於任務結束時的善後處理。另外,後台執行緒的優先順序要...
Python合併和拆分excel
當前目錄 og dir cwd origin 存放待合併的excel og ls os.listdir og dir 所有excel名稱 cb name combine.xlsx 合併後的檔名 合併 放置待拆分的excel 限1個 fname b dir os.listdir b dir 0 待拆分...
Python 執行緒,前台執行緒,後台執行緒生命週期
import threading import time import win32api 引用系統函式 class mythread threading.thread 繼承threading.thread def run self run重寫,win32api.messagebox 0,你的賬戶很危...