Pythonキュー
キューに関して、最初にその最も基本的な使用法を見てみましょう。
import queue
q = queue.Queue(3) # 3是maxsize
q.put("你好啊")
print(q.get())
你好啊
これは先入れ先出し法として分類できます(つまり、最初のq.put()は最初のq.get()の出力に対応し、検証できます)
import queue
q = queue.Queue(4)
q.put(1)
q.put(2)
q.put(3)
print(q.get())
print(q.get())
print(q.get())
1
2
3
q.put()は全部で3つあり、q.put()が3つある場合は、出力内容が順番に対応します。
以下の2番目の出力方法を見てみましょう-後入れ先出し:
import queue
q = queue.LifoQueue(4)
q.put(1)
q.put(2)
q.put("alex")
q.put("al")
print(q.get())
print(q.get())
print(q.get())
print(q.get())
al
alex
2
1
最初のq.put()はq.get()のときに最後に出力され、最後のq.put()はq.get()のときに最初に出力されることがわかります。
3番目の出力モード-優先度キュー(自己定義の優先度)を見てみましょう。
import queue
q = queue.PriorityQueue(4)
q.put((5,"元宝"))
q.put((3,"小"))
q.put((0,"xx"))
q.put((-2,"gd"))
print(q.get())
print(q.get())
print(q.get())
print(q.get())
(-2, 'gd')
(0, 'xx')
(3, '小')
(5, '元宝')
q.put()によると、タプルの最初の桁がデータの出力に優先されます。
キューq = queue.Queue(x)の場合、背後にあるq.put()とq.get()の数はxを超えることはできず、2つの数は同じでなければならないことに注意してください(そうでない場合、ブロックされます。 q。get(timeout = t)#t秒間ブロックし、値がない場合はエラーを直接報告しない限り、以下に例を示します。
import queue
q = queue.Queue(3)
q.put(1)
q.put(2)
q.put(3)
print(q.get())
print(q.get())
print(q.get())
q.get(timeout=2) # 阻塞2s,还没有值直接报错
1
2
3
Traceback (most recent call last):
File "D:/python代码/线程队列.py", line 12, in <module>
q.get(timeout=2) # 阻塞2s,还没有值直接报错
File "D:\python\python\lib\queue.py", line 178, in get
raise Empty
_queue.Empty
この記事がお役に立てば幸いです。著者に少しの励ましとサポートを与えることができます。あなたの励ましは、これからの私の絶え間ない原動力です。