我有一个基于Raspberry Pi的项目,运行最新版本的Raspbian Jessie。 4个独立的Python脚本(包含用于操作多个步进电机的无限循环,其他硬件设备以及ADC和输入设备的轮询)在4个独立的SSH连接中同时运行,并通过简单的UDP套接字服务器在彼此之间进行数据通信。
此时一切正常,但是,与机器建立4个独立的SSH连接是不可行的。从本质上讲,我正在寻找一种方法来生成4个独立的Python实例:
目前该系统基于Python 2.7。我尝试使用Python 3(asyncio
)无济于事。我也尝试使用multiprocessing
和threading
模块,但未成功。
我不一定需要另一个Python脚本来生成所有4个实例;一个shell脚本就好了。我理解可能使用os.subprocess(shell=True)
或其他类似的东西?
谢谢, 亚当
答案 0 :(得分:2)
因为这似乎是解决方案:
您只需要一台SSH连接到调用单个脚本的计算机:
ssh me@raspi "bash ~/caller.sh"
该脚本将调用您的所有功能:
#!/usr/bin/env bash
python script1.py &
python script2.py &
python script3.py &
python script4.py &
该行末尾的&
表示该行的命令将在后台运行,bash不会等到该行完成后再启动下一行。最后一个命令的&
是可选的,具体取决于您是否要立即返回命令提示符。
对于你的评论,写入stdout不会被抑制;您将看到所有4个python脚本的输出根据每个脚本的距离而混合。
答案 1 :(得分:0)
启动4个后台作业的bash
脚本可能适用于PoC阶段和测试。但是如果以后你想要可靠地运行你的代码超过几分钟,你需要实现一些监督逻辑。我的建议是使用systemd
来设置1个控制器和4个工作服务。通过这种方式,systemd
将大量提升您的服务的监控/重启/等等,您只需使用ssh
来控制主服务。