#-*- 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("."))
#这一步是用当前目录下得文件名作测试