我有一个问题,因为我不明白背后的原则。你知道吗
我编写了一个python脚本,从USB-DVB-T加密狗读取实时数据,以便接收无线温度传感器的数据。我正在使用一个叫做rtl\u fm的程序。这将从加密狗读取数据并将其导入我的脚本。我通过寻找不太复杂的例子来写剧本。你知道吗
在这个脚本中我使用系统标准文件号()从输入流中不断读取512字节。现在,我不明白的是,为什么这样做?如果加密狗(又称inputstream)以高于脚本读取速率的速率传递数据,我可能会丢失数据,或者某个缓冲区最终会溢出。如果速度较慢,我的脚本将一度停止,因为没有更多的数据。你知道吗
有人能解释一下这是怎么起作用的吗?你知道吗
泰铢。你知道吗
操作系统的管道处理正在为您执行缓冲。如果你读得太快,你的阅读就会受阻。如果
rtl_fm
写得太快,写就会阻塞。是否丢失数据取决于rtl_fm
的工作方式。你知道吗顺便说一句,假设
rtl_fm
输出原始字节,在python3中,您可以通过从sys.stdin.buffer
读取来从stdin
读取这些字节,而不是混用文件描述符和os
调用。(在python2中,您可以从sys.stdin
读取字节;至少,您可以在Linux和其他Unix(如不在文本流上进行换行翻译的操作系统)上读取字节)。你知道吗相关问题 更多 >
编程相关推荐