【发布时间】:2013-12-05 07:03:27
【问题描述】:
我知道您可能认为这是一个重复的问题,但到目前为止我还没有找到解决我自己问题的方法。
目前,我有一个 C 程序不断产生数据流。我希望我的 python 程序有一种方法可以读取这些数据,这样我就不必在 C 中完成所有事情。
C程序的感觉主要是这样的:
int i = 0;
while(1){
printf("%d %d\n", i, i+1);
i++;
}
我阅读并尝试了 Python 中的子进程,似乎它们都需要等待命令完成。(例如:Constantly print Subprocess output while process is running)我希望有一些缓冲机制,以便我可以记录这个比特流并逐行处理线。谢谢。
几个假设:
1) 处理过的行可以丢弃
2) 缓冲区/队列大小没有问题,因为我可以从源头控制速率以匹配 python 程序的处理速度。
更多背景知识: C 程序基本上驱动摄像头馈送(这就是它用 C 编写的原因),执行一些 OpenCV 工作并输出对象位置 (x, y) int 值。 python程序需要该位置做一些进一步的处理。
谢谢。
【问题讨论】:
-
注意:如果可以修改C程序;您可以添加
setvbuf(stdout, (char *) NULL, _IOLBF, 0);(使程序行缓冲,无论它是打印到终端还是另一个程序(管道))以在 C 中打印后立即获取每一行。
标签: python shell subprocess