【发布时间】:2018-06-07 20:39:18
【问题描述】:
我有一个基于运行最新版本 Raspbian Jessie 的 Raspberry Pi 的项目。 4 个独立的 Python 脚本(包含用于操作多个步进电机、其他硬件设备以及轮询 ADC 和输入设备的无限循环)在 4 个独立的 SSH 连接中同时运行,并通过一个简单的 UDP 套接字服务器在彼此之间进行数据通信。
此时一切都运行良好,但是,与机器建立 4 个单独的 SSH 连接是不可行的。本质上,我正在寻找一种方法来生成 4 个单独的 Python 实例:
- 不受Global Interpreter Lock的约束
- 能够相互传递变量
目前系统基于 Python 2.7。我已经尝试过 Python 3(asyncio)但无济于事。我也尝试使用multiprocessing 和threading 模块,但未成功。
我不一定需要另一个 Python 脚本来生成所有 4 个实例;一个shell脚本就可以了。我知道可以使用os.subprocess(shell=True) 或类似的东西吗?
谢谢, 亚当
【问题讨论】:
-
这个问题感觉有点开放,因为这是一个设计选择,有很多解决方案。如果我不得不建议,也许是一个 ssh,然后在微控制器上产生 4 个 bash 进程来控制步进电机?
-
你能写一个shell脚本在后台调用这4个函数吗?即,从 ssh 调用
bash ./caller.sh有 4 行python2.7 script1.py & python2.7 script2.py & ...? -
单个shell脚本不只是等待第一个脚本退出吗? (这永远不会发生)。
-
目前这不是设计选择 - 它缺乏实施知识!
-
@jeremysprofile 但是,独立的 Python 进程是如何开始的,会共享变量吗?
标签: python bash shell ssh raspberry-pi