多线程问题python代码(交替打印A,B,生产者-消费者问题)

一个线程写AAA,一个线程写BBB

import threading
import time

# 创建一个锁对象
lock = threading.Lock()

# 定义线程函数,写入A或B
def write_letter(letter):
    global lock
    for i in range(10):
        with lock:
            print(letter * 3)  # 打印10个字母
        time.sleep(0.5)  # 模拟写入操作所需时间

# 创建两个线程,一个写A,一个写B
thread_A = threading.Thread(target=write_letter, args=("A",))
thread_B = threading.Thread(target=write_letter, args=("B",))

# 启动线程
thread_A.start()
thread_B.start()

结果

AAA
BBB
BBB
AAA
BBB
AAA
AAA
BBB
AAA
BBB
AAA
BBB
AAA
BBB
AAA
BBB
AAA
BBB
AAA
BBB

生产者-消费者问题

import threading
import time
import random
from queue import Queue

# 共享队列,使用queue.Queue来实现线程安全
shared_queue = Queue(maxsize=10)

# 消费者线程函数
def consumer():
    while True:
        item = shared_queue.get()  # 从队列中获取一个元素
        print(f'Consumer processed: {item}')
        time.sleep(random.uniform(0.1, 0.5))  # 模拟处理时间
        shared_queue.task_done()  # 通知队列该任务已处理完成

# 生产者线程函数
def producer(shared_queue):
    for i in range(20):
        time.sleep(random.uniform(0.1, 0.5))  # 模拟生产时间
        item = i  # 生产一个数据项
        print(f'Producer produced: {item}')
        shared_queue.put(item)  # 将数据项放入队列

# 创建消费者线程
consumer_thread = threading.Thread(target=consumer, daemon=True)
consumer_thread.start()

# 创建生产者线程
producer_thread = threading.Thread(target=lambda: producer(shared_queue))
producer_thread.start()

# 等待生产者线程完成
producer_thread.join()

# 等待所有队列中的任务被处理完成
shared_queue.join()

Producer produced: 0
Consumer processed: 0
Producer produced: 1
Consumer processed: 1
Producer produced: 2
Consumer processed: 2
Producer produced: 3
Consumer processed: 3
Producer produced: 4
Consumer processed: 4
Producer produced: 5
Producer produced: 6
Consumer processed: 5
Producer produced: 7
Consumer processed: 6
Producer produced: 8
Producer produced: 9
Consumer processed: 7
Producer produced: 10
Consumer processed: 8
Producer produced: 11
Consumer processed: 9
Producer produced: 12
Consumer processed: 10
Producer produced: 13
Consumer processed: 11
Consumer processed: 12
Producer produced: 14
Producer produced: 15
Consumer processed: 13
Consumer processed: 14
Producer produced: 16
Consumer processed: 15
Producer produced: 17
Producer produced: 18
Consumer processed: 16
Producer produced: 19
Consumer processed: 17
Consumer processed: 18
Consumer processed: 19

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值