中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python實現隊列同步的方法是什么

發布時間:2020-08-06 09:45:08 來源:億速云 閱讀:153 作者:小新 欄目:編程語言

小編給大家分享一下Python實現隊列同步的方法是什么,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

隊列

q = Queue.Queue(maxsize = 10) 創建一個“隊列”對象。Queue.Queue類即是一個隊列的同步實現。隊列長度可為無限或者有限。可通過Queue的構造函數的可選參數maxsize來設定隊列長度。如果maxsize小于1就表示隊列長度無限。

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

q.get([block[, timeout]])方法從隊頭刪除并返回一個項目。可選參數為block,默認為True。如果隊列為空且block為True,get()就使調用線程暫停,直至有項目可用。如果隊列為空且block為False,隊列將引發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() 函數向任務已經完成的隊列發送一個信號

q.join() 實際上意味著等到隊列為空,再執行別的操作

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

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

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實現隊列同步的方法是什么有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

珠海市| 山东省| 云浮市| 翁源县| 周宁县| 东莞市| 南召县| 石城县| 彩票| 阿勒泰市| 朔州市| 贺州市| 万安县| 鄂温| 利津县| 咸阳市| 巴南区| 景谷| 达拉特旗| 平昌县| 堆龙德庆县| 新晃| 花莲市| 肇源县| 化州市| 徐闻县| 安化县| 武宣县| 济宁市| 洛隆县| 平利县| 安仁县| 吴川市| 九江市| 黑龙江省| 视频| 若尔盖县| 剑阁县| 清新县| 新野县| 乌拉特前旗|