日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:Python如何實現(xiàn)隊列的同步實現(xiàn)

隊列

十余年專注成都網(wǎng)站制作,企業(yè)網(wǎng)站制作,個人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設(shè)計流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站制作,高端網(wǎng)頁制作,對成都搬家公司等多個方面,擁有豐富設(shè)計經(jīng)驗。

q = Queue.Queue(maxsize = 10) 創(chuàng)建一個“隊列”對象。Queue.Queue類即是一個隊列的同步實現(xiàn)。隊列長度可為或者有限??赏ㄟ^Queue的構(gòu)造函數(shù)的可選參數(shù)maxsize來設(shè)定隊列長度。如果maxsize小于1就表示隊列長度。

q.put()方法在隊尾插入一個項目。put()有兩個參數(shù),第一個item為必需的,為插入項目的值;第二個block為可選參數(shù),默認(rèn)為1。如果隊列當(dāng)前為空且block為1,put()方法就使調(diào)用線程暫停,直到空出一個數(shù)據(jù)單元。如果block為0,put方法將引發(fā)Full異常。

q.get([block[, timeout]])方法從隊頭刪除并返回一個項目。可選參數(shù)為block,默認(rèn)為True。如果隊列為空且block為True,get()就使調(diào)用線程暫停,直至有項目可用。如果隊列為空且block為False,隊列將引發(fā)Empty異常,timeout等待時間。

q.qsize() 返回隊列的大小

q.empty() 如果隊列為空,返回True,反之False

q.full() 如果隊列滿了,返回True,反之False

q.full 與 maxsize 大小對應(yīng)

q.get_nowait() 相當(dāng)q.get(False)

q.put_nowait(item) 相當(dāng)q.put(item, False)

q.task_done() 在完成一項工作之后,q.task_done() 函數(shù)向任務(wù)已經(jīng)完成的隊列發(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))

運行結(jié)果:

1
2
3

報錯:

queue.Empty

線程操作列表是不安全的。

相關(guān)推薦:《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()

運行結(jié)果:

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("生產(chǎn)出來 %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()

運行結(jié)果:

生產(chǎn)出來 94 號包子
生產(chǎn)出來 13 號包子
生產(chǎn)出來 79 號包子
吃掉 94號包子
吃掉 13號包子
吃掉 79號包子
生產(chǎn)出來 43 號包子
吃掉 43號包子
生產(chǎn)出來 32 號包子
吃掉 32號包子
......

相關(guān)推薦:

Python如何實現(xiàn)線程條件同步


文章標(biāo)題:創(chuàng)新互聯(lián)Python教程:Python如何實現(xiàn)隊列的同步實現(xiàn)
本文網(wǎng)址:http://www.5511xx.com/article/djsgcji.html