2018-12-08线程

!/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的时候就解阻塞。。

你可能感兴趣的:(2018-12-08线程)