繁体   English   中英

multiprocessing - 子进程不断发回结果并保持运行

[英]multiprocessing - child process constantly sending back results and keeps running

是否有可能让几个子进程运行一些计算,然后将结果发送到主进程(例如更新 PyQt ui),但进程仍在运行,一段时间后它们发回数据并再次更新 ui? 使用 multiprocessing.queue,似乎只有在进程终止后才能将数据发回。 所以我想知道这种情况是否可能。

我不知道你的意思是“使用 multiprocessing.queue,似乎数据只能在进程终止后发回”。 这正是 Multiprocessing.Queue 设计用于的用例。

PyMOTW 是一整套 Python 模块(包括 Multiprocessing)的绝佳资源。 在这里查看: https : //pymotw.com/2/multiprocessing/communication.html

如何使用多处理和循环将正在进行的消息从子级发送到父级的简单示例:

import multiprocessing

def child_process(q):
    for i in range(10):
        q.put(i)
    q.put("done")  # tell the parent process we've finished

def parent_process():
    q = multiprocessing.Queue()
    child = multiprocessing.Process(target=child_process, args=(q,))
    child.start()
    while True:
        value = q.get()
        if value == "done":  # no more values from child process
            break
        print value
        # do other stuff, child will continue to run in separate process

暂无
暂无

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

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