gpt4 book ai didi

Python - 将参数传递给已经运行的进程

转载 作者:行者123 更新时间:2023-12-05 09:18:50 26 4
gpt4 key购买 nike

首先,我是 Python 的新手。我也搜索了解决方案,但我想通常的方法 (subprocess.popen) 对我来说不起作用。

我必须在已经运行的 python 脚本中将参数传递给监听器,而无需一遍又一遍地启动脚本。有一个如何将消息传递到 lcd 屏幕的示例:

function printMsgText(message_text)
local f = io.popen("home/test/show_message.py '" .. message_text .. "'")
end

上面的 lua 脚本定义了每次收到消息时调用的过程。调用的进程 (show_message.py) 如下所示:

import sys
from sense_hat import SenseHat
sense = SenseHat()
sense.clear()
sense.show_message(sys.argv[1])

我需要类似的东西,除了有另一个脚本在后台运行,所以 show_message.py 不是最终进程,但需要将参数/消息传递给另一个已经运行的脚本。我的想法是让 show_message.py 将消息打印到控制台并在主进程中也使用 sys.argv,但我有点担心它会变得困惑。

有什么简单的方法可以做到这一点吗?亲切的问候

编辑:

主脚本控制步进电机。根据用户输入,电机驱动预定义步数。等待用户输入的脚本部分如下所示:

while wait:
user_position = input("Where do you wanna go? (0, 1, 2, back): ")
wait = False
# Console output
print("Position: " + str(user_position))

if user_position == "0":
stepper.set_target_position(position_zero)
wait = True
elif user_position == "1":
stepper.set_target_position(position_one
wait = True
elif user_position == "2":
stepper.set_target_position(position_two)
wait = True
elif user_position == "back":
break

现在我需要通过按我上面描述的方式设计的网络应用程序传递所需的位置(例如,每次传递变量/参数时调用 lua 脚本)而不是通过控制台。

最佳答案

一旦进程运行,它就不会重新评估其命令行参数。您需要其他方式与它通信。这通俗地称为进程间通信 (IPC),有多种方法可以实现。这里有一些:

  • 文件
  • 管道(在支持它们的平台上)
  • 共享内存
  • 套接字通信
  • 消息传递
  • 远程调用

可能最平易近人的方式是标准流(STDIN、STDOUT),例如由您提到的 subprocess.popen()。但这需要通信进程之间存在父子关系。也许你可以走这条路。

Python 的另一种方法,如果你想避免父子关系,我有很好的经验是 Pyro .它易于使用且运行良好,尽管有一些性能损失。这也是一种非常“基础架构式”的实现方式,两个进程都必须进行编码才能使用它。

关于Python - 将参数传递给已经运行的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43207159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com