Python中如何实现带超时的队列

2023-04-11 00:00:00 队列 超时 如何实现

Python中实现带超时的队列可以使用Queue模块中的Queue类和timeout参数来实现。

下面演示一个带超时的字符串队列的实现代码:

import queue
import threading

q = queue.Queue()

def producer():
    while True:
        q.put("pidancode.com")
        threading.Event().wait(1)

def consumer():
    while True:
        try:
            string = q.get(timeout=5) # 设置超时时间为5s
            print(string)
        except queue.Empty:
            print("Queue is empty.")
            break

producer_thread = threading.Thread(target=producer)
consumer_thread = threading.Thread(target=consumer)

producer_thread.start()
consumer_thread.start()

producer_thread.join()
consumer_thread.join()

在这个例子中,生产者线程不断往队列中添加字符串“pidancode.com”,并且每次添加之后等待1秒钟,以保证队列中有多个元素。消费者线程不断从队列中取出元素,当队列为空时,等待超时时间5秒钟,如果再次没有元素,则停止消费。

通过上述方法,可以实现一个带超时的队列,可以在需要时设置合适的超时时间,避免队列长时间阻塞。

相关文章