最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中的queue隊列類型及函數(shù)用法

 更新時間:2022年09月28日 09:17:32   作者:wcl1800  
這篇文章主要介紹了python中的queue隊列類型及函數(shù)用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

python queue隊列類型及函數(shù)

1.隊列的種類

Python queue模塊的FIFO隊列先進先出。 class queue.Queue(maxsize)

LIFO類似于堆,即先進后出。 class queue.LifoQueue(maxsize)

還有一種是優(yōu)先級隊列級別越低越先出來。 class queue.PriorityQueue(maxsize)

import queue

# 先進先出隊列
queue_obj = queue.Queue()

for i in range(3):
? ? queue_obj.put(i)

for i in range(3):
? ? print(queue_obj.get())

"""執(zhí)行結果
0
1
2
"""

# 先進后出隊列,類似于堆棧
queue_obj = queue.LifoQueue()

for i in range(3):
? ? queue_obj.put(i)

for i in range(3):
? ? print(queue_obj.get())

"""執(zhí)行結果
2
1
0
"""

# 優(yōu)先級隊列
import Queue
import threading

class Job(object):
? ? def __init__(self, priority, description):
? ? ? ? self.priority = priority
? ? ? ? self.description = description
? ? ? ? print 'Job:',description
? ? ? ? return
? ? def __cmp__(self, other):
? ? ? ? return cmp(self.priority, other.priority)

q = Queue.PriorityQueue()

q.put(Job(3, 'level 3 job'))
q.put(Job(10, 'level 10 job'))
q.put(Job(1, 'level 1 job'))

def process_job(q):
? ? while True:
? ? ? ? next_job = q.get()
? ? ? ? print 'for:', next_job.description
? ? ? ? q.task_done()

workers = [threading.Thread(target=process_job, args=(q,)),
? ? ? ? threading.Thread(target=process_job, args=(q,))
? ? ? ? ]

for w in workers:
? ? w.setDaemon(True)
? ? w.start()

q.join()

2.隊列函數(shù)

maxsize = 10
queue_obj = queue.Queue(maxsize)  # maxsize 代表隊列的上限, 如果隊列已滿, 則插入時需要等待, maxsize為零或負數(shù)時.隊列沒有限制

queue_obj.get(block=True, timeout=None)  # block為True時,表示等待獲取,直至timeout超時
queue_obj.get_nowait()  # 當獲取不到元素時,報錯

queue_obj.put(item="待插入的元素", block=True, timeout=None)  # block為True時,表示等待插入,直至timeout超時
queue_obj.put_nowait('待插入的元素')  # 當不能插入元素時報錯

queue_obj.empty()  # 隊列為空時,返回True

queue_obj.full()  # 如果隊列滿時,返回True

queue_obj.task_done()  # 在每次獲取隊列中的元素, 操作完成之后, 調用該函數(shù)告訴隊列我已經(jīng)使用完成, 主要是給join函數(shù)使用
queue_obj.join()  # 等待隊列內(nèi)的元素全部被獲取后, 再接觸阻塞(直至所有的任務全部task_done)

"""下面的例子驗證toask_done和join的關系"""
for i in range(3):
    queue_obj.put(i)  # 這里像隊列中添加三個元素

queue_obj.get()  # 這里獲取隊列中的消息
queue_obj.task_done()

queue_obj.get()  # 這里獲取隊列中的消息
queue_obj.task_done()

queue_obj.get()  # 這里獲取隊列中的消息
queue_obj.task_done()

queue_obj.join()
print('直至隊列中的所有元素全部都被取出, join函數(shù)才不會阻塞, 如果只執(zhí)行了兩次task_done函數(shù), 則join會一直阻塞')

python 隊列類及其方法

1.Python的隊列類型

from queue import Queue, LifiQueue, PriorityQueue, SimpleQueue
  • FIFO(先入先出)Queue(maxsize=0):FIFO隊列的構造函數(shù)。maxsize是一個整數(shù),用于設置放入隊列中數(shù)據(jù)的上限。一旦達到此大小,插入將被阻塞。如果maxsize<=0,則隊列大小為無限。
  • LIFO(后進先出)LifoQueue(maxsize=0):LIFO隊列的構造函數(shù),其它同上。
  • 優(yōu)先級隊列 PriorityQueue(maxsize=0):優(yōu)先級隊列的構造函數(shù),其它同上。
  • SimpleQueue:FIFO隊列的簡單形式,缺少諸如任務跟蹤之類的高級功能。
  • Empty:在空對象上調用get()方法,引發(fā)的異常隊列。
  • Full:在已滿的對象上調用put()方法,引發(fā)的異常隊列。

2.隊列對象(適用Queue、LifoQueue和PriorityQueue)

qsize()

  • 返回隊列的大小。
  • 注意qsize()>0不能保證后續(xù)的get()不會阻塞,qsize()<maxsize也不能保證對get()的后續(xù)調用不會阻塞。

empty()

  • 如果隊列是空的返回True,否則返回False。
  • 如果返回True不能保證后續(xù)對put()的調用都不會阻塞。如果返回False也不能保證對get()的后續(xù)調用不會阻塞。

full()

  • 如果隊列滿了返回True,否則返回False。
  • 如果返回True不能保證對get()的后續(xù)調用不會阻塞。如果full返回False也不能保證后續(xù)對put()的調用不會阻塞。

put(item, block=True, timeout=None)

  • 將數(shù)據(jù)插入隊列中。
  • 如果block=True, timeout=None則在必要時進行阻塞,直到隊列有空間為止。如果timeout=正數(shù),則它最多超時正數(shù)秒。Full隊列如果在該時間內(nèi)沒有空間可用,會引發(fā)異常。如果block=False,隊列有空間,則將數(shù)據(jù)放入隊列(超時被忽略),否則引發(fā)Full異常。

put_nowait(item)

  • 等同于put(item, False)。

get(block=True, timeout=None)

  • 從隊列中刪除并返回一個數(shù)據(jù)。
  • 如果block=True, timeout=None則在必要時進行阻塞,直到隊列有數(shù)據(jù)為止。如果timeout=正數(shù),則它最多超時正數(shù)秒。Empty隊列如果在該時間內(nèi)沒有數(shù)據(jù)可用,會引發(fā)異常。如果block=False,隊列有數(shù)據(jù),則會返回一個數(shù)據(jù)(超時被忽略),否則引發(fā)Empty異常。

get_nowait()

  • 等同于get(False)。

task_done()

  • 表示先前排隊的任務已完成。

join()

  • 阻塞直到隊列中的所有數(shù)據(jù)都已獲得處理。每當將項目添加到隊列時,未完成任務的數(shù)量就會增加。每當使用者線程調用task_done()以指示已檢索到該項目并且該項目的所有工作完成時,該計數(shù)就會減少。當未完成的任務數(shù)降至零時,join()取消阻止。

3.SimpleQueue對象

qsize()
empty()
put(item, block = True, timeout = None )
put_nowait(item)
get(block = True,timeout = None)
get_nowait(item)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python學習之時間包使用教程詳解

    Python學習之時間包使用教程詳解

    本文主要介紹了Python中的內(nèi)置時間包:datetime包?與?time包?,通過學習時間包可以讓我們的開發(fā)過程中對時間進行輕松的處理,快來跟隨小編一起學習一下吧
    2022-03-03
  • Python中bytes和str的區(qū)別與聯(lián)系詳解

    Python中bytes和str的區(qū)別與聯(lián)系詳解

    Python3最重要的新特性之一是對字符串和二進制數(shù)據(jù)流做了明確的區(qū),下面這篇文章主要給大家介紹了關于Python中bytes和str區(qū)別與聯(lián)系的相關資料,需要的朋友可以參考下
    2022-05-05
  • Numpy中關于arctan和arctan2的區(qū)別

    Numpy中關于arctan和arctan2的區(qū)別

    這篇文章主要介紹了Numpy中關于arctan和arctan2的區(qū)別,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • windows、linux下打包Python3程序詳細方法

    windows、linux下打包Python3程序詳細方法

    這篇文章主要介紹了windows、linux下打包Python3程序詳細方法,需要的朋友可以參考下
    2020-03-03
  • python時間日期操作方法實例小結

    python時間日期操作方法實例小結

    這篇文章主要介紹了python時間日期操作方法,結合實例形式總結分析了Python針對日期時間的轉換、計算相關操作技巧,需要的朋友可以參考下
    2020-02-02
  • 基于MTCNN/TensorFlow實現(xiàn)人臉檢測

    基于MTCNN/TensorFlow實現(xiàn)人臉檢測

    這篇文章主要為大家詳細介紹了基于MTCNN/TensorFlow實現(xiàn)人臉檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python3實現(xiàn)監(jiān)控新型冠狀病毒肺炎疫情的示例代碼

    Python3實現(xiàn)監(jiān)控新型冠狀病毒肺炎疫情的示例代碼

    這篇文章主要介紹了Python3實現(xiàn)監(jiān)控新型冠狀病毒肺炎疫情的示例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Python設計模式行為型責任鏈模式

    Python設計模式行為型責任鏈模式

    這篇文章主要介紹了Python設計模式行為型責任鏈模式,責任鏈模式將能處理請求的對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對象處理請求為止,避免請求的發(fā)送者和接收者之間的耦合關系,下圍繞改內(nèi)容介紹具有一點的參考價值,需要的朋友可以參考下
    2022-02-02
  • python中的正斜杠與反斜杠實例驗證

    python中的正斜杠與反斜杠實例驗證

    這篇文章主要介紹了python中的正斜杠與反斜杠實例驗證,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Python編程實現(xiàn)簡易的音樂播放器基本操作

    Python編程實現(xiàn)簡易的音樂播放器基本操作

    這篇文章主要來教大家利用Python編程來實現(xiàn)一個簡易的音樂播放器,文中含有基本功能的操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10

最新評論

黄石市| 大英县| 东乌珠穆沁旗| 磐石市| 苏尼特右旗| 肇源县| 沂源县| 沂源县| 托里县| 江城| 西峡县| 永丰县| 库尔勒市| 陵川县| 九龙坡区| 大竹县| 喀喇| 奉化市| 眉山市| 清苑县| 丹巴县| 西宁市| 泗阳县| 泗水县| 大邑县| 准格尔旗| 如东县| 安吉县| 凌云县| 格尔木市| 房山区| 尖扎县| 资阳市| 武义县| 长春市| 布尔津县| 宽城| 舟曲县| 红安县| 监利县| 拜城县|