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

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.")

相关推荐

  1. Python使用队列线传递数据

    2024-07-18 13:44:02       19 阅读
  2. python如何线使用异步

    2024-07-18 13:44:02       53 阅读
  3. socket线之间进行通信

    2024-07-18 13:44:02       56 阅读
  4. python获取线名称和传递参数,数据共享

    2024-07-18 13:44:02       46 阅读
  5. python线使用

    2024-07-18 13:44:02       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 13:44:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 13:44:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 13:44:02       58 阅读
  4. Python语言-面向对象

    2024-07-18 13:44:02       69 阅读

热门阅读

  1. STM32判断休眠

    2024-07-18 13:44:02       21 阅读
  2. Spring boot 2.0 升级到 3.3.1 的相关问题 (四)

    2024-07-18 13:44:02       16 阅读
  3. Miniforge 安装器

    2024-07-18 13:44:02       21 阅读
  4. 基于opencv的图片加水印实现方案

    2024-07-18 13:44:02       20 阅读
  5. redis知多少

    2024-07-18 13:44:02       22 阅读
  6. 【LeetCode 0069】【二分查找】求平方根

    2024-07-18 13:44:02       22 阅读
  7. 密码学原理精解【8】

    2024-07-18 13:44:02       19 阅读