亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

屯昌县| 辽中县| 无棣县| 阿克陶县| 将乐县| 临泉县| 日照市| 杭锦后旗| 山东| 长泰县| 和静县| 三明市| 文化| 来安县| 惠水县| 牙克石市| 蕉岭县| 基隆市| 乐平市| 商城县| 罗甸县| 桂平市| 崇信县| 吴堡县| 华坪县| 桐城市| 长治市| 武邑县| 墨脱县| 灵台县| 开封县| 乌拉特中旗| 富阳市| 肃宁县| 宁陕县| 武宁县| 斗六市| 连州市| 西乌| 石门县| 怀仁县|