python实现生产者和消费者模型

import threading
import time
from queue import Queue
from threading import Thread

mutex = threading.Lock()
queue = Queue()
data = []


def produce(i):
    for i in range(i):
        queue.put_nowait((time.time(), [1, 2, 3]))


def consume():
    while True:
        while queue.qsize():
            get_queue = queue.get()
            ds_time = get_queue[0]
            per_ds = get_queue[1]
            data.append(per_ds)
            while int(time.time()) - int(ds_time) < 3:
                continue
        # 加锁
        mutex.acquire()
        if data:
            files = []
            for index, item in enumerate(data):
                files.append(item)
            print(files)
            # 上传文件
            # upload_file(files)
            # 清空数据
            data.clear()
        # 释放锁
        mutex.release()


t2 = Thread(target=consume)
t2.start()
for i in range(3):
    produce(10)
    time.sleep(5)

运行结果

在这里插入图片描述

总结

生产者每次通过非等待式插入队列中,假定设置每个生产者相隔5秒发送数据,消费者接收数据,获取数据后等待若干秒,通常小于第二批生产的时间,这样每批都能生产10个数据,消费10个数据。最后拿到每批数据并分批批量处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值