作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我有proc1 | proc2
有没有一种方法可以准确测量流经管道的比特率,而不改变行为,就好像测量设备不存在一样?像T恤这样的东西可以吗?我想要 proc1 | tee proc2 > flow_measurement_thing
或proc1 | tee flow_measurement_thing > proc2
?如果我正确理解管道,unix管道默认可以读取4096字节,如果接收器读取数据的速度不如数据输入的速度,它们可能会阻塞,所以我担心测量设备本身可能会导致“层流”流过如果我没有正确实现,管道就会变得“湍流”。
实际用例粘在 python 中,并使用来自操作系统的命名管道..这是一个大大简化的示例
import os, subprocess
os.mkfifo('pipe')
subprocess.Popen(['convert', '-i', 'pipe', '-o', 'somewhere_else'])
subprocess.Popen(['capture', '-o', 'pipe'])
为了简单起见,我们假设转换器不修改比特率,那么我希望能够验证 capture | convert | /dev/null
正在以与 capture | /dev/null
相同的速率泵送比特
最佳答案
正如 Corey Goldberg 所说,您应该使用 pv
。这是一个非常好的工具,可在大多数 *nix 系统上使用。你可以做这些事情:
capture | pv > /dev/null
capture | convert | pv > /dev/null
pv
将告诉您每种情况的吞吐量。
或者,如果capture
的输出是确定性的,则只需使用计时器。
关于python - 如何准确测量流经命名管道的比特率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6380418/
我是一名优秀的程序员,十分优秀!