1. 程式人生 > >python---基礎知識回顧(十)進程和線程(自定義線程池,上下文管理器和協程的使用)

python---基礎知識回顧(十)進程和線程(自定義線程池,上下文管理器和協程的使用)

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>

線程池應該具備的功能:

  1. 先創建線程池,
  2. 之後去獲取數據的時候,若是有直接拿走
  3. 若是沒有,需要去阻塞等待,直到有數據到達
  4. 線程池可以設置指定大小
  5. 滿足上面“阻塞”要求,設置大小,的數據結構,我們可以使用Queue隊列

簡單版本(Low):

python---基礎知識回顧(十)進程和線程(自定義線程池,上下文管理器和協程的使用)