标签:python
使用这个技能时,有2个办法,
1 使用Thread类实例化对象,然后调用它的start()方法,
2 自定义类,继承自Thread类,然后重写run()方法,然后再实例化我们自定义的类,并且调用它的start()方法
-
1 使用Thread类实例化对象,然后调用它的start()方法
def new_task(name,count):
et = ET()
total = 0
for x in range(count):
print "Task {0} is running".format(name)
time.sleep(1)
print "Task {0} total: {1}".format(name, total)
print "Task {0} total elapsed time: {1}".format(name, et())
def main():
work_queue = Queue.Queue() #1 生成队列(FIFO类型的队列)
for work in [5,10,15,2]: #2 往队列里面放东西
work_queue.put(work)
et = ET() #3 开始计时
while not work_queue.empty():
count = work_queue.get()
_t = Thread(target=new_task,args=(str(count),count)) #初始化一个线程
_t.start() #让该线程启动,用多线程异步的去跑
_t.join() #主线程在这里阻塞等待
print ">>>>>>>"
print "Total elapsed time is {0}".format(et())
if __name__ == ‘__main__‘:
main()
-
这种情况下,从work_queue里面拿出的数据,用线程跑。
但是在主线程中,无法阻塞。
print “>>>>>>”这句话会先执行
使用Thread异步开启单个任务,适用于开启后就不用再管的任务
标签:python
原文地址:http://5186120.blog.51cto.com/5176120/1965414