[英]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.ProcessPoolExecutor
和multiprocessing.Pool
方式。 它们具有专用线程,该线程耗尽任务/结果队列并运行任何关联的回调。
如果要保存一些资源,在这种情况下可以使用SimpleQueue
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.