交付:一个不积压的生产者消费者

交付:一个不积压的生产者消费者

场景:要交付一个不会积压的生产者消费者,说明写了生产个数、队列上限 K、消费者个数 M。 任务:写 ~/积压/答.py:queue.Queue(maxsize=K)(有界背压);1 个生产者放说明里那

阅读更多 →
每秒积压涨多少

每秒积压涨多少

场景:~/积压/说明.txt 写了生产者每秒产出多少个、消费者每秒处理多少个(无界队列)。对照表列了八个数。 任务:算出队列每秒净涨多少个(产出速率减处理速率),到对照表里查那个数对应的标记。 可操作

阅读更多 →
给生产者限速

给生产者限速

场景:~/积压/坏.py 的生产者不管不顾地猛放,即使队列有界,生产者也几乎一直在被背压挡着空转日志刷屏。说明写了一个每轮 sleep 的节流值。 任务:给生产者每产一个之后加上说明里那个 time.

阅读更多 →
加消费者把积压追上

加消费者把积压追上

场景:~/积压/慢.py 只有 1 个消费者,追不上生产,处理很久才完(~/复现.sh 能看到它慢)。说明里写了要开几个消费者。 任务:把消费者改成说明里那么多个(多起几个消费者线程分着取),让它更快

阅读更多 →
满了丢了几个

满了丢了几个

场景:~/积压/日志.txt 记录了一次「满了就丢」(put_nowait)的运行:每行要么是入队的编号、要么是 DROP。对照表列了八个数。 任务:数出一共丢了多少个(DROP 的行数),到对照表里

阅读更多 →
给队列加上上限

给队列加上上限

场景:~/积压/坏.py 用 queue.Queue()(无界),生产快于消费,队列无限涨。说明里写了该用的上限 K。 任务:把队列改成有界 queue.Queue(maxsize=K)(满了 put

阅读更多 →
谁是瓶颈

谁是瓶颈

场景:~/积压/跑.py 里生产者每个 sleep 一小段、消费者每个也 sleep 一小段(时间写在代码里)。对照表列了八个角色名。 任务:读代码比较两边每个数据花的时间,找出更慢的那一方(瓶颈),

阅读更多 →
积压有多大

积压有多大

场景:~/积压/日志.txt 记了程序运行时每秒的队列长度(一行一个数)。对照表列了八个数。 任务:找出队列长度的最大值(积压峰值),到对照表里查那个数对应的标记。 可操作范围:只在分给你的这台实验机

阅读更多 →
从现象认积压的原因

从现象认积压的原因

把四种现象和原因配对,打印四个字母: signs = { "队列长度一直涨": "A", "换成有界后生产者变慢了": &q

阅读更多 →
队列积压先查什么

队列积压先查什么

一个生产者消费者程序内存越用越多、疑似队列积压,先查【0】。

阅读更多 →