新聞中心
隊列

十余年專注成都網站制作,企業(yè)網站制作,個人網站制作服務,為大家分享網站制作知識、方案,網站設計流程、步驟,成功服務上千家企業(yè)。為您提供網站建設,網站制作,網頁設計及定制高端網站建設服務,專注于企業(yè)網站制作,高端網頁制作,對成都搬家公司等多個方面,擁有豐富設計經驗。
q = Queue.Queue(maxsize = 10) 創(chuàng)建一個“隊列”對象。Queue.Queue類即是一個隊列的同步實現(xiàn)。隊列長度可為或者有限。可通過Queue的構造函數(shù)的可選參數(shù)maxsize來設定隊列長度。如果maxsize小于1就表示隊列長度。
q.put()方法在隊尾插入一個項目。put()有兩個參數(shù),第一個item為必需的,為插入項目的值;第二個block為可選參數(shù),默認為1。如果隊列當前為空且block為1,put()方法就使調用線程暫停,直到空出一個數(shù)據(jù)單元。如果block為0,put方法將引發(fā)Full異常。
q.get([block[, timeout]])方法從隊頭刪除并返回一個項目??蛇x參數(shù)為block,默認為True。如果隊列為空且block為True,get()就使調用線程暫停,直至有項目可用。如果隊列為空且block為False,隊列將引發(fā)Empty異常,timeout等待時間。
q.qsize() 返回隊列的大小
q.empty() 如果隊列為空,返回True,反之False
q.full() 如果隊列滿了,返回True,反之False
q.full 與 maxsize 大小對應
q.get_nowait() 相當q.get(False)
q.put_nowait(item) 相當q.put(item, False)
q.task_done() 在完成一項工作之后,q.task_done() 函數(shù)向任務已經完成的隊列發(fā)送一個信號
q.join() 實際上意味著等到隊列為空,再執(zhí)行別的操作
import queue
d = queue.Queue()
d.put('1')
d.put('2')
d.put('3')
print(d.get())
print(d.get())
print(d.get())
print(d.get())
print(d.get(0))運行結果:
1 2 3
報錯:
queue.Empty
線程操作列表是不安全的。
相關推薦:《python視頻教程》
import threading, time
li = [1, 2, 3, 4, 5]
def pri():
while li:
a = li [-1]
print(a)
time.sleep(1)
try:
li.remove(a)
except:
print('-----', a)
t1 = threading.Thread(target=pri, args=())
t1.start()
t2 = threading.Thread(target=pri, args=())
t2.start()運行結果:
5 5 4 ----- 5 4 3 ----- 4 3 2 ----- 3 2 1 ----- 2 1 ----- 1
import threading, queue
from time import sleep
from random import randint
class Production(threading.Thread):
def run(self):
while True:
r = randint(0, 100)
q.put(r)
print("生產出來 %s 號包子" %r)
sleep(1)
class Proces(threading.Thread):
def run(self):
while True:
re = q.get()
print('吃掉 %s號包子' %re)
if __name__ == '__main__':
q = queue.Queue(10)
threads = [Production(),Production(),Production(),Proces()]
for t in threads:
t.start()運行結果:
生產出來 94 號包子 生產出來 13 號包子 生產出來 79 號包子 吃掉 94號包子 吃掉 13號包子 吃掉 79號包子 生產出來 43 號包子 吃掉 43號包子 生產出來 32 號包子 吃掉 32號包子 ......
相關推薦:
Python如何實現(xiàn)線程條件同步
當前名稱:創(chuàng)新互聯(lián)Python教程:Python如何實現(xiàn)隊列的同步實現(xiàn)
標題URL:http://m.fisionsoft.com.cn/article/djsgcji.html


咨詢
建站咨詢
