[英]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.