我制作了3个python代码。我正在使用Raspberry Pi
注意:所有这些代码都在while(True)
循环
现在,我必须将所有这三个程序相互并行运行。我已经阅读了大约3个选项
SubProcess - 使用subprocess()将python代码导入一个代码并运行它们
使用/ etc / profile - 我放在sudo nano /etc/profile
sudo python3 (link to code1) & sudo python3 (link to code3)
这样运行得很好......虽然我偶尔会陷入一个无限循环中并且对此感觉不舒服。
定义函数 - 我将两个程序定义为3个代码中最大的代码,并以非常快的速度运行。
现在所有这3个确实给我输出的信息几乎没有错误。但我想知道......这是最好的,最有效的方式来并行运行多个程序
答案 0 :(得分:0)
选项1是最普遍的。这就是这种类型的程序的工作方式 - 它们可以在不同的进程中工作,甚至可以在不同的机器或容器上工作,并通过网络/ ipc API相互协作。
选项2几乎相同,但没有意义。 /etc/profile
is invoked only for login shells because that is its specific purpose.您需要一个选项才能在其他用户下启动该程序。如果您打算重新启动程序,为什么不首次使用相同的机制启动它?
选项3.如果您在一个过程中以不同的功能运行应用程序 - 太麻烦了。你有时间问题 - 哪个功能正在运行。您可以使用多线程,但它可能对您的用例来说太复杂了。虽然第二个应用程序只是提交网络请求,但这是一个非常可行的解决方案。代码2和3将是相同的应用程序。在第二个线程中运行它 - 它将数据收集到本地sqlite数据库,并发送未标记为已提交的消息(同样的想法适用于选项1)。