其實線程隊列queue跟進程Queue的用法一樣。
一、先進先出
import queue
q = queue.Queue()
q.put('kobe')
q.put('cxk')
print(q.get())
print(q.get())
# print(q.get())
q.task_done()
q.task_done()
q.join() # 進行阻塞,直到隊列里所有項目均被處理,且均被q.task_done(),才能通過。
結果:
kobe
cxk
二、先進后出(LifeQueue)
實現一個類似於堆棧的效果
import queue
q = queue.LifoQueue()
q.put('No.1')
q.put('No.2')
q.put('No.3')
print(q.get())
print(q.get())
print(q.get())
'''
結果:
No.3
No.2
No.1
'''
三、設置優先級隊列(PriorityQueue)
import queue
q = queue.PriorityQueue()
# put進入一個元組,元組的第一個元素是優先級,(通常是數字,也可以是非數字之間的比較),數字較小優先級高
q.put((10,'a'))
q.put((5,'b'))
q.put((1,'c'))
print(q.get())
print(q.get())
print(q.get())
'''
結果:
(1, 'c')
(5, 'b')
(10, 'a')
'''
四、線程定時器(Timer)
from threading import Timer
import time
def func():
print('線程開始執行')
time.sleep(2)
print('線程結束')
t = Timer(4,func) # 通過定時器來控制開啟線程的時間,時間到了,下面的代碼才會執行。
t.start()
print('主')