簡體   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