带有最小间隔时间的队列读取实现 —— 最小等待时间的队列 —— Python编程(续)
接前文:
带有最小间隔时间的队列读取实现 —— 最小等待时间的队列 —— Python编程
由于上次的设计多少有些简单,这里对此丰富一下。
=====================================
根据前文的内容进行了修改和丰富,得到下面设计:
(需要说明的是,根据模拟环境的测试前后这两个版本的性能,即吞吐量基本一致,所以并没有哪个更优一说,这里只是提供零一种思路)
from multiprocessing import Process, Queue import threading from threading import Thread import numpy as np import time import queue q = Queue(maxsize=128) def produce(q): while True: q.put( np.random.rand(128, 128) ) time.sleep(np.random.randint(100)/1000) for _ in range(10): p = Process(target=produce, args=(q, )) p.start() data = [] def consumer(data): l = len(data) print("长度:", len(data)) data.clear() time.sleep(0.1) return l """ while True: print(q.qsize()) """ s = 0 # while True: b_t = time.time() interval = 0.1 for i in range(36): for _ in range(10): # 超参数, 轮询次数 l = q.qsize() if l >= 32: # batch_size # l = min(l, 64) l = max(l, 64) break else: time.sleep(interval/10) for _ in range(l): data.append(q.get()) # print("time: ", i) s += consumer(data) b = time.time() - b_t print(b) print(s) print("吞吐率", s/b)

=====================================
本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址,还有个别文章是汇总网上多份资料所成,在这之中也必有疏漏未加标注处,如有侵权请与博主联系。
如果未特殊标注则为原创,遵循 CC 4.0 BY-SA 版权协议。
posted on 2023-11-02 08:46 Angry_Panda 阅读(34) 评论(0) 收藏 举报
浙公网安备 33010602011771号