繁体   English   中英

多处理:如何将数据从父进程发送到持续运行的子进程?

[英]multiprocessing: how to send data from parent to continuously running child process?

是否可以使用多处理将数据发送到正在运行的子进程? 例如,在子进程中运行 web 服务器,并使用父进程向服务器发送数据。 我发现这个问题与我的情况完全相反(即从正在运行的子进程不断更新回父进程)。 有没有办法让它工作? 我的理解是 multiprocessing.Queue 仅在进程终止时发送/接收数据。 这个伪代码给出了我想做的事情的骨架:

def server(q):
    //start eventlet server
    q.get() // --> does something

q = Queue()
p = Process(target=server, args=(q,))
p.start()
q.put("some kind of command")

我认为您误读了您引用的答案。 multiprocessing.Queue专为您描述的目的而设计。 也许查看 class 的参考文档? 另一种选择也可能是multiprocessing.Pipe

您的伪代码几乎完全按照编写的方式运行:

from multiprocessing import Queue, Process
import time

def server(q):
    while True:
        stuff = q.get()
        print(stuff, flush=True)

if __name__ == '__main__':
    q = Queue()
    p = Process(target=server, args=(q,))
    p.start()
    for i in range(5):
        q.put(i)
        time.sleep(1)
    p.terminate()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM