前戏:
在进行自定义线程池前, 先了解下 Queue 队列
队列中可以存放基础数据类型, 也可以存放类, 对象等特殊数据类型
- from queue import Queue
- class T:
- def __init__(self,num):
- self.num = num
- def printf(self):
- print(self.num,id(self.num))
- if __name__ == "__main__":
- queue = Queue(0)
- num = 12
- queue.put(num) #可以存放基础数据类型
- t = T(num)
- queue.put(t) #可以存放对象
- cls = T
- queue.put(cls) #可以存放类
- dt = queue.get()
- print(id(dt),dt,type(dt)) #1385649280 12 <class 'int'>
- dt = queue.get()
- print(id(dt),dt,type(dt)) #7652128 <__main__.T object at 0x000000000074C320> <class '__main__.T'>
- dt = queue.get()
- print(id(dt),dt,type(dt)) #18042264 <class '__main__.T'> <class 'type'>
线程池应该具备的功能:
先创建线程池,
之后去获取数据的时候, 若是有直接拿走
若是没有, 需要去阻塞等待, 直到有数据到达
线程池可以设置指定大小
满足上面 "阻塞" 要求, 设置大小, 的数据结构, 我们可以使用 Queue 队列
简单版本(Low):
来源: http://www.bubuko.com/infodetail-2595934.html