線程隊列queue的使用


其實線程隊列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('主')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM