python - 在单个 SSH 连接中生成多个 Python 实例的最简单方法
问题描述
我有一个基于运行最新版本 Raspbian Jessie 的 Raspberry Pi 的项目。4 个独立的 Python 脚本(包含用于操作多个步进电机、其他硬件设备以及轮询 ADC 和输入设备的无限循环)在 4 个独立的 SSH 连接中同时运行,并通过一个简单的 UDP 套接字服务器在彼此之间进行数据通信。
在这一点上,一切都运行良好,但是,有 4 个单独的 SSH 连接到机器是不可行的。本质上,我正在寻找一种方法来生成 4 个单独的 Python 实例:
- 不受全局解释器锁定
- 能够相互传递变量
目前该系统基于 Python 2.7。我已经尝试过使用 Python 3 (for asyncio
) 无济于事。我也尝试使用multiprocessing
andthreading
模块,但没有成功。
我不一定需要另一个 Python 脚本来生成所有 4 个实例;一个shell脚本就可以了。我知道有可能使用os.subprocess(shell=True)
或类似的东西?
谢谢,亚当
解决方案
由于这似乎是解决方案:
您只需与调用单个脚本的机器建立一个 SSH 连接:
ssh me@raspi "bash ~/caller.sh"
该脚本将调用您的所有函数:
#!/usr/bin/env bash
python script1.py &
python script2.py &
python script3.py &
python script4.py &
行尾的 表示该&
行的命令将在后台运行,并且 bash 在开始下一行之前不会等待该行完成。on last 命令是可选的&
,具体取决于您是否要立即返回到命令提示符。
对于您的评论,不会禁止对标准输出的写入;您将看到所有 4 个 python 脚本的输出根据每个脚本的距离混合在一起。
推荐阅读
- openid - 添加电子邮件范围会导致 POST 到 oauth-authorize 在 curity 6.0.0 上抛出 400 错误
- c# - 如何在 Raylib 中制作具有厚度的 3D 三角形
- elasticsearch - 如何更改指标/文件节拍日志字段的格式
- java - 如何将设置 json 添加到 selenium 的 .exe 文件
- react-native - react-native-video 中的失真
- c# - 修改表达式树中的变量以检查递归深度
- javascript - How can i search inside array of array object in javascript?
- javascript - 在 2 个不同的 js 文件中使用变量(chrome 扩展名)
- python - 如何将我的电话号码生成器的输出放入 txt?
- javascript - Cypress 使用请求正文中的文件进行 HTTP POST 时出错