python 多線程模板簡單實現
阿新 • • 發佈:2019-03-12
all pro lee 通知 done pan col __main__ ces
#-*- encoding: UTF-8 -*- #編碼聲明 import threading,Queue,os import time #導入方法模塊 def main(inargs): work_queue = Queue.Queue() #queue類中實現了鎖 for i in range(3):#設置了3個子進程 worker = Worker(work_queue,i) #工作線程、工作隊列、線程編號 worker.daemon = True #守護進程 worker.start() #啟動線程開始 for elemt in inargs: work_queue.put(elemt) #加入到隊列中開始各個線程 work_queue.join() #隊列同步 class Worker(threading.Thread): #繼承線程類,類也是不太好學習的部分 def __init__(self, work_queue,number): super(Worker,self).__init__() self.work_queue= work_queue self.number = number def process(self,elemt): #自定義的線程處理函數,用於run()中. #這裏僅僅打印線程號和傳入參數 time.sleep(5) print("\n{0} task:----{1}".format(self.number,elemt)) def run(self): #重載threading類中的run() while True:try: elemt = self.work_queue.get() #從隊列取出任務 self.process(elemt) finally: self.work_queue.task_done() #通知queue前一個task已經完成 if __name__=="__main__": main(os.listdir(".")) #這一步是用當前目錄下得文件名作測試
python 多線程模板簡單實現