从python脚本到已经运行的scrip的通信

2024-03-28 22:06:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我在两个Python脚本之间进行通信时遇到了一些问题。 我对python和raspberry pi还比较陌生,我已经找到了 多种方法,经过一段时间的了解方法转向 对我来说毫无用处。所以在花了几个小时之后,我想会的 最好问问更有经验的人

所以我在做一个项目,我用一个网页通过一个多树莓Pi来控制多台机器(每个树莓4个) 你可以在网页上输入机器和机器应该激活多长时间。 然后,该网页执行一个Python脚本,将机器和运行时间作为raspberry pi的参数,并在指定的时间内激活机器。 到目前为止一切都很顺利

我也有一个小的2线液晶屏幕为每个树莓皮。 此屏幕应每10秒左右更改一次,并显示raspberry上的每台机器以及机器仍在运行的时间,然后更改为下一台

因此,在屏幕上显示所有内容的脚本是一个无休止的循环,每10秒更改一次,但我不知道如何将新的运行时间正确地放入正在运行的python脚本中

我使用python脚本中已经存在的值来激活机器,因此我认为我可以通过某种方式将此脚本中的信息发送到无休止的、已经运行的LCD脚本

但我发现的大多数方法是停止并等待另一个脚本的信号。但它不会每10秒改变一次

我现在知道的唯一方法是保存到文件并读取另一个脚本xD中的文件,但这不是很优雅

我很感激我能得到的每一个帮助和建议

猕猴桃


Tags: 文件项目方法脚本机器网页屏幕时间
1条回答
网友
1楼 · 发布于 2024-03-28 22:06:42

您可以使用数据库(SQLite是一个简单的基于文件的DB系统,至少使用Perl,您可以将DB直接放入内存)

另一种方法是使用共享内存,无论是通过模块还是文件系统本身

下面是一个示例,其中一个Python脚本将数据结构写入JSON文件以/dev/shm共享内存空间,另一个脚本将JSON作为写入的数据结构读回:

输出脚本:

import json

file = "/dev/shm/data.json"

data = {
    "pi1_enabled": True,
    "pi1_run_mins": 30,
    "pi2_enabled": False,
    "pi2_run_mins": 30
}

with open(file, "w") as jsonfile:
    json.dump(data, jsonfile)

输入脚本:

import json

file = "/dev/shm/data.json"

data = json.loads(open(file).read())

print(data)

输入脚本的输出:

{'pi1_run_mins': 30, 'pi1_enabled': True, 'pi2_enabled': False, 'pi2_run_mins': 30}

相关问题 更多 >