隊列queue

隊列簡單使用:python

import queue

def a():
    print("this is fun a")

class B():
    def p(self):
        print("this is class B")

# 先進先出
q1 = queue.Queue()
b = B()
q1.put(1)
q1.put(a)
q1.put(b)
d = q1.get()
print(d)
d = q1.get()
d()
d = q1.get()
d.p()
del q1
"""運行結果
1
this is fun a
this is class B
"""
# q.empty()判斷q是否爲空。
# q.full(0判斷q是否爲滿

# 設置queue的大小
q1 = queue.Queue(maxsize=3)
try:
    q1.get(timeout=1)  # 當q爲空時,超過1秒仍是空時會報異常:queue.Empty
except Exception as e:
    print(e)
try:
    q1.get_nowait()  # 當q爲空時,會報異常:queue.Empty
except Exception:
    pass

q1.put("xxx")  # 當q滿時會阻塞
q1.put("xxx")  # 當q滿時會阻塞
q1.put("xxx")  # 當q滿時會阻塞
try:
    q1.put_nowait("xxx")  # 當q滿時會報異常:queue.Full
except Exception:
    pass

try:
    q1.put(b,timeout=2)   # 超過2秒q仍是滿時會報異常:queue.Full
except Exception as e:
    print(e)
print(q1.get()) #當q爲空時會阻塞
del q1

# 先進後出隊列
q1 = queue.LifoQueue(maxsize=5)
del q1
# 優先級隊列
q1 = queue.PriorityQueue(maxsize=5)
# 數字曉得優先級高
q1.put((1,"yes"))
q1.put((5,"no"))
q1.put((3,"yes"))
print(q1.get())
print(q1.get())
print(q1.get())
"""運行結果
(1, 'yes')
(3, 'yes')
(5, 'no')
"""
相關文章
相關標籤/搜索