簡體   English   中英

多進程隊列或管道的Python回調

[英]Python callback for a multiprocess Queue or Pipe

有沒有一種方法可以創建一個回調,該回調將在通過multiprocessing處理啟動的子進程中將某些東西發送到主進程時執行? 到目前為止,我能想到的最好的是:

import multiprocessing as mp
import threading
import time    

class SomeProcess(mp.Process):
    def run(self):
        while True
            time.sleep(1)
            self.queue.put(time.time())

class ProcessListener(threading.Thread):
    def run(self):
        while True:
            value = self.queue.get()
            do_something(value)

if __name__ = '__main__':
    queue = mp.Queue()
    sp = SomeProcess()
    sp.queue = queue
    pl = ProcessListener()
    pl.queue = queue
    sp.start()
    pl.start()

除了已經發布的方法,沒有其他方法可以做到。

這是實際實現concurrent.fututes.ProcessPoolExecutormultiprocessing.Pool方式。 它們具有專用線程,該線程耗盡任務/結果隊列並運行任何關聯的回調。

如果要保存一些資源,在這種情況下可以使用SimpleQueue

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM