線程間通信推薦用隊列
阿新 • • 發佈:2018-10-28
普通 自帶 等級 使用 獲取數據 指定 span 實現 就是
# 隊列是數據安全的,意思是自帶鎖,多線程間通信時,使用隊列是好的,不會出現同一個數據被多個線程搶占,使用其他數據類型進行通信則需要自己實現鎖功能 import queue # 普通先進先出隊列 # q = queue.Queue() # 沒有參數則表示隊列沒有指定深度 # q.put(1) # 如果隊列指定了深度則到了深度後,會阻塞在這裏等待隊列有空間後再向隊列中放入數據 # q.put_nowait() # 隊列滿了也不會阻塞在這裏,但會有異常 # q.get() # 從隊列中獲取數據,無數據後悔阻塞 # q.get_nowait() # 從隊列中獲取數據,隊列空時也不會阻塞,會報異常# 先進後出隊列,棧 # q = queue.LifoQueue() # 創建先進後出隊列,就是棧 # q.put(1) # q.get() # 優先級隊列 q = queue.PriorityQueue() # 優先級隊列 q.put((20, ‘a‘)) # 20表示優先級,值越小,優先級越高,越先被get獲取到。第二個參數為值 q.put((10, ‘ee‘)) q.put((10,‘c‘)) # 同樣等級優先級的,則按照值的ascii碼優先級,同優先級下,值的ascii碼優先級越高的,越先被get到 q.put((30, ‘cb‘)) print(q.get()) #(10, ‘c‘)
線程間通信推薦用隊列