我有两个进程一个 C 和一个 python。C 进程花费时间将数据传递到命名管道,然后 python 进程读取该管道。应该非常简单,并且当我每秒传递一次数据(当前是时间戳,例如“Mon Aug 19 18:30:59 2013”)时它工作正常。
当我取出睡眠时出现问题(1);C进程中的命令。当没有一秒钟的延迟时,通信很快就会被搞砸。python 进程将读取多条消息或报告它已读取数据,即使其缓冲区为空。此时C进程通常会发生炸弹。
在我发布任何示例代码之前,我想知道是否需要在双方实现某种同步。就像可能告诉 C 进程不要写入 fifo 如果它不为空?
C 进程以只读方式打开命名管道,python 进程以只读方式打开。
这两个过程都旨在作为循环运行。C 进程不断读取通过 USB 端口传入的数据,python 进程获取每个“消息”并在将其发送到 SQL Db 之前对其进行解析。
如果我要每秒查看多达 50 条消息,命名管道是否能够处理该级别的事务率?每个事务的大小相对较小(20 字节左右),但频率让我想知道我是否应该研究其他形式的进程间通信,例如共享内存?
任何建议表示赞赏。如有必要,我可以发布代码,但目前我只是想知道我是否应该以某种方式在两个进程之间同步。
谢谢!