【发布时间】:2011-06-17 01:16:53
【问题描述】:
如果我有proc1 | proc2,有没有办法准确测量流过管道的比特率,而不会像测量设备不存在一样改变行为?像 tee 这样的东西可以吗?我想要proc1 | tee proc2 > flow_measurement_thing 还是proc1 | tee flow_measurement_thing > proc2?如果我正确理解管道,默认情况下,unix 管道可以咀嚼 4096 字节,如果接收器读取数据的速度不快,它们会阻塞,所以我担心测量设备本身可能会导致“层流”流过如果我没有正确实施,管道会变得“湍流”。
实际用例在 python 中粘合,带有来自 os.. 的命名管道。这是一个大大简化的示例
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 相同的速率抽取比特
【问题讨论】:
-
pv(管道查看器)有帮助吗? ivarch.com/programs/pv.shtml
-
是的,这就是诀窍。谢谢!
标签: python subprocess pipe named-pipes fifo