【发布时间】:2021-11-03 01:05:38
【问题描述】:
对于我正在处理的基于 Raspberry Pi 的项目,我想要一个主程序和一个“状态检查器”辅助脚本。换句话说,当第一个程序启动时,我希望它作为后台服务启动并将我踢回终端,然后可以使用辅助程序检查第一个程序的状态/进度。
我需要主程序将变量值发送到状态检查脚本,然后将它们打印到终端。我找到了this old post,但它似乎不起作用。
我对旧帖子中的代码进行了一些修改,但在这里。 import main 没有导入函数,它似乎只是运行main.py。我在main.py 中添加了for 循环作为我将在主脚本中执行的操作的占位符。
#main.py
from multiprocessing import Process,Pipe
import time
def f(child_conn):
msg = "Hello"
child_conn.send(msg)
child_conn.close()
for i in range(1000000):
print(i)
time.sleep(0.05)
#second.py
from multiprocessing import Process,Queue,Pipe
from main import f
if __name__ == '__main__':
parent_conn,child_conn = Pipe()
p = Process(target=f, args=(child_conn,))
p.start()
print(parent_conn.recv()) # prints "Hello"
【问题讨论】:
-
这能回答你的问题吗? Interprocess communication in Python
-
如果您在同一个操作系统上运行两个应用程序、同一个应用程序中的两个线程或两个应用程序或两个设备(这似乎不太可能来自内容)。第一个是进程间通信,第二个是多线程(或多处理),第三个是分布式处理。每种都有多种解决方案。请更正标题、标签和内容。
-
Berkay 在下面的回答是可行的,那么为什么需要所有多处理的东西呢?防止脚本同时尝试修改变量? @DannyVarod - 这两个脚本在同一个 Raspberry Pi 上运行,它们是不同的应用程序。
-
@drobot 问题含糊不清,请在问题中澄清,而不是 cmets
标签: python python-multiprocessing