python---基礎知識回顧(十)進程和線程(自定義線程池,上下文管理器和協程的使用)
阿新 • • 發佈:2018-05-11
elf () self. 數據類型 大小 get 基礎數據類型 __init__ 進行
前戲:
在進行自定義線程池前,先了解下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):
python---基礎知識回顧(十)進程和線程(自定義線程池,上下文管理器和協程的使用)