【发布时间】:2017-07-24 06:31:15
【问题描述】:
我有两个脚本,我想让它们在交互式设备上进行通信。 所以我做到了:
./script1 | ./script2.py
我的 script1 是用 c++ 完成的(我有源代码),而 script2 是我用 python 制作的一个脚本,用于解释 script1 的输出并写入串行端口。
我的问题是,过了一会儿,所有进程开始变慢。我已经分别测试了每个脚本它的工作原理......(不减慢速度)它可能来自通信吗? 我还有其他选择吗?它是否存在一种“强制”执行并始终采用 script1 的最后输出的方法?
【问题讨论】:
-
您可以查看Unix sockets。 MPI 也是进程间通信的一个选项。
-
谢谢,但 MPI 似乎适用于多处理器,这不是我的情况,如果我使用套接字,我如何在不修改的情况下接收 script1 的输出?
-
MPI 用于与多个进程es 进行通信,不需要将所有进程调度在同一个 CPU 上;它不需要多个进程or 即可工作。
-
@Dadep AFAIK 您必须修改脚本才能使用套接字。另一种选择是将
script1的标准输出重定向到script2的标准输入。为此,您首先启动python script2.py &,它将为您提供进程号。然后您可以启动./script1 > /proc/<process-number>/fd/0,这是script2的标准输入(但这需要sudo)。另请参阅this answer。 -
@Dadep 您还可以通过辅助文件执行通信。也就是说,您将输出从
script1重定向到一个文件:./script1 > aux_file,然后您可以直接从该文件(从代码中)读取script2.py,或者将tail -f传递给它:tail -f aux_file | ./script2.py(但是我不确定第二种方法是否与您已经完成的完全不同)。
标签: python c++ bash pipe real-time