1. 程式人生 > >python 多線程模板簡單實現

python 多線程模板簡單實現

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 多線程模板簡單實現