2018-12-08线程
2018-12-18 本文已影响0人
太阳出来我爬山坡
!/usr/bin/env python
-- coding:utf-8 --
Author:Jarry
'''
可重复利用的线程
'''
from threading import Thread
from queue import Queue
import time
import random
class MyThread(Thread):
def init(self):
Thread.init(self) #继承父类的方法
self.queue = Queue() #实例化队列
self.start() #创建就开始启动线程(实例化后),线程启动后 调用run方法,启动后 没有 数据会阻塞.
start() 调用run 源来父类的方法.
def run(self):
while True: #循环取出任务,执行任务
fun,args,kwargs =self.queue.get() #获取队列中的任务
fun(*args,**kwargs) #运行任务
self.queue.task_done() #发送任务完成信号
def task(info):
print(info)
time.sleep(random.randint(1, 3))
if name == 'main':
t = MyThread() #实例化一个线程
for i in range(3):
t.queue.put((task,(i, ),{}))
t.queue.join() #阻塞,queue的计数器为0的时候就解阻塞。。