欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python隊列基本操作和多線程隊列

 更新時間:2022年02月10日 11:55:47   作者:侯小啾?  
pythonQueue隊列模塊提供了同步線程安全的隊列類,包括FIFO(先入先出)隊列Queue,LIFO(后入先出)隊列LifoQueue,和優(yōu)先級隊列PriorityQueue,這些隊列都實現了鎖原語,能夠在多線程中直接使用,可以使用隊列來實現線程間的同步,下面我們就來看看python隊列基本操作吧

一、隊列基本操作

from queue import Queue

q = Queue(5) ?# 創(chuàng)建一個容量為5的隊列。如果給一個小于0的數,則隊列為無限大小。(這是官方的解釋,實際不是無限大小,而是跟內存有關)

# 存儲數據
q.put(123) ?# 數值?
q.put('hello world!') ?# 字符串
q.put(['hello', 'world']) ?# 列表
q.put(('hello', 'world')) ?# 元組
q.put({'hello': 'world'}) ?# 字典

# 如果再試圖存儲第六個,則會發(fā)生阻塞,因為容量已設定為5
# q.put({'hello': 'python'})

取出隊列中的值:

print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())

如圖五個值被依次取出。Queue隊列遵循的是先進先出。

q.put_nowait()

q.put_nowait()方法可以無阻礙地向隊列中添加內容,如果隊列已滿則會立即報錯,不會等待(即不會發(fā)生阻塞)。

q.get_nowait()

q.get_nowait()方法可以無阻礙地從隊列中取出內容,如果隊列是空的則也會直接報錯,不會等待。
具體使用不再示例。

查看隊列當前大小

q.qsize()

print(q.qsize())
print(q.get())
print(q.qsize())
print(q.get())
print(q.qsize())
print(q.get())
print(q.qsize())
print(q.get())
print(q.qsize())
print(q.get())
print(q.qsize())

如圖,每取出一個值,隊列大小就減一。同樣每存入一個值隊列大小就會加一。

q.full()

判斷隊列是否是滿的。

q.empty()

判斷隊列是否是空的。

print(q.full())
print(q.get())
print(q.get())
print(q.full())
print(q.empty())
print(q.get())
print(q.get())
print(q.get())
print(q.empty())

二、多線程隊列

from queue import Queue
import threading
import time


# 存儲值,每隔一秒存儲一個
def set_value(q):
? ? num = 0
? ? while True:
? ? ? ? q.put(num)
? ? ? ? num += 1
? ? ? ? time.sleep(1)

# 取值,不間斷地取
def get_value(q):
? ? while True:
? ? ? ? print(q.get())


if __name__ == '__main__':
? ? q = Queue(4)
? ? t1 = threading.Thread(target=set_value, args=(q, ))
? ? t2 = threading.Thread(target=get_value, args=(q, ))

? ? t1.start()
? ? t2.start()

程序開始運行,一邊存儲,一邊取值:

此思想應用在爬蟲上,即一邊訪問并獲取數據,一邊下載數據。

到此這篇關于python隊列基本操作和多線程隊列的文章就介紹到這了,更多相關python隊列內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python中內置庫os與sys模塊的詳細介紹

    python中內置庫os與sys模塊的詳細介紹

    這篇文章主要介紹了python中內置庫os與sys模塊的詳細介紹,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • Pyqt5 基本界面組件之inputDialog的使用

    Pyqt5 基本界面組件之inputDialog的使用

    今天小編就為大家分享一篇Pyqt5 基本界面組件之inputDialog的使用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • pyinstaller打包多個py文件和去除cmd黑框的方法

    pyinstaller打包多個py文件和去除cmd黑框的方法

    今天小編就為大家分享一篇pyinstaller打包多個py文件和去除cmd黑框的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 解決Python字典寫入文件出行首行有空格的問題

    解決Python字典寫入文件出行首行有空格的問題

    下面小編就為大家?guī)硪黄鉀QPython字典寫入文件出行首行有空格的問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 使用numpy查找元素位置numpy.where

    使用numpy查找元素位置numpy.where

    這篇文章主要介紹了使用numpy查找元素位置numpy.where問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Python實戰(zhàn)之夢幻鋼琴小游戲的實現

    Python實戰(zhàn)之夢幻鋼琴小游戲的實現

    這篇文章主要為大家詳細介紹了如何利用Python語言編寫一款界面化的(Tkinter)電子鋼琴小程序,文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-02-02
  • Python matplotlib的使用并自定義colormap的方法

    Python matplotlib的使用并自定義colormap的方法

    今天小編就為大家分享一篇Python matplotlib的使用并自定義colormap的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python unittest 簡單實現參數化的方法

    Python unittest 簡單實現參數化的方法

    今天小編就為大家分享一篇Python unittest 簡單實現參數化的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python asyncore socket客戶端實現方法詳解

    Python asyncore socket客戶端實現方法詳解

    這篇文章主要介紹了Python asyncore socket客戶端實現方法,asyncore庫是python的一個標準庫,提供了以異步的方式寫入套接字服務的客戶端和服務器的基礎結構
    2022-12-12
  • Python使用ffmpeg合成視頻、音頻的實現方法

    Python使用ffmpeg合成視頻、音頻的實現方法

    這篇文章主要介紹了Python使用ffmpeg合成視頻、音頻,通過本文的學習能幫助大家了解如何在python中調用ffmpeg模塊,對此進行音視頻合并,完成視頻合成,需要的朋友可以參考下
    2022-04-04

最新評論