线程模型

01 #-*- encoding: UTF-8 -*-
02 import threading,queue,os
03  
04 def main(inargs):
05     work_queue = queue.Queue()     #queue类中实现了锁
06     for in range(3):#设置了3个子进程
07         worker = Worker(work_queue,i)     #工作线程(工作队列,线程编号)
08         worker.daemon = True                  #不死的,守护进程
09         worker.start()                        #启动线程
10     for elemt in inargs:
11         work_queue.put(elemt)              #加入到队列中,开始喂养各个线程
12     work_queue.join()                       #队列同步
13  
14  
15 class Worker(threading.Thread):
16     #继承线程类
17     def __init__(self, work_queue,number):
18         super().__init__()
19         self.work_queue = work_queue  
20         self.number = number
21  
22     def process(self,elemt):#自定义的线程处理函数,用于run()中,这里仅仅打印线程号和传入参数
23         print("\n{0}  task:----{1}".format(self.number,elemt))
24  
25  
26     def run(self): #重载threading类中的run()
27         while True:
28             try:
29                 elemt = self.work_queue.get() #从队列取出任务
30                 self.process(elemt)
31             finally:
32                 self.work_queue.task_done() #通知queue前一个task已经完成
33  
34 if __name__=="__main__":
35

    main(os.listdir(".")) #这里用当前目录下得文件名作测试

转自 :isomorphism

你可能感兴趣的:(线程模型)