Python使用队列在两个线程中传递数据


在多线程编程中,使用队列可以在多个线程之间安全地传递数据。

什么是队列?

队列(Queue)是一种先进先出(FIFO)的数据结构。Python的queue模块实现了线程安全的队列,支持多种类型的队列,包括Queue、LifoQueue和PriorityQueue

实现步骤

  1. 导入必要的模块
  2. 创建队列
  3. 定义生产者线程和消费者线程
  4. 启动线程

完整代码

import threading
import queue
import time

# 创建队列
data_queue = queue.Queue()

# 生产者线程函数
def producer(queue):
    for i in range(10):
        item = f"Item {i}"
        queue.put(item)
        print(f"Produced {item}")
        time.sleep(1)  # 模拟生产数据的延迟
    queue.put(None)  # 生产完毕的标志

# 消费者线程函数
def consumer(queue):
    while True:
        item = queue.get()
        if item is None:
            break  # 结束循环的条件
        print(f"Consumed {item}")
        time.sleep(2)  # 模拟处理数据的延迟

# 创建生产者和消费者线程
producer_thread = threading.Thread(target=producer, args=(data_queue,))
consumer_thread = threading.Thread(target=consumer, args=(data_queue,))

# 启动线程
producer_thread.start()
consumer_thread.start()

# 等待线程完成
producer_thread.join()
consumer_thread.join()

print("All tasks are completed.")

07-18 04:14