繁体   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