91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

鹿邑县| 曲沃县| 科技| 桂平市| 荣昌县| 田林县| 嘉义县| 方城县| 威信县| 灯塔市| 汕尾市| 元谋县| 鄂托克旗| 南乐县| 邵东县| 武清区| 浑源县| 木兰县| 东乌珠穆沁旗| 清徐县| 江山市| 康定县| 得荣县| 双峰县| 内丘县| 陇南市| 苍梧县| 克东县| 松潘县| 乳山市| 拜城县| 福建省| 西安市| 黄冈市| 家居| 淮北市| 亚东县| 芮城县| 长葛市| 沐川县| 乌恰县|