我目前正在使我的程序使用multiprocessing.Process,我想从我的Process子类中获取一个对象。
在主要 .py内部:
p = DataProcessor()
p.start()
#later:
obj = p.x
在数据处理器 .py内部:
from multiprocessing import Process
class DataProcessor(Process):
def __init__(self):
#call to super etc
self.x = None
def run(self):
while True:
if self.x is None:
self.x = 5 #normally i set this to an object
当我现在想在我的 main 中使用x时,它始终为None。
如何不必使用multiprocessing.Queue就可以使它正常工作?
(我认为仅处理一个对象一次,队列既不可读也不有用)
答案 0 :(得分:0)
您可以使用多处理管道;)
但是,严重的是,您必须使用进程间通信在进程之间共享数据。这是一个简单的示例,可从子进程中检索x
。
from multiprocessing import Process, Queue
import time
class DataProcessor(Process):
def __init__(self, queue):
#call to super etc
Process.__init__(self)
self.queue = queue
self.x = None
def run(self):
while True:
if self.x is None:
self.x = 5 #normally i set this to an object
self.queue.put(self.x)
if __name__ == '__main__':
queue = Queue()
p = DataProcessor(queue)
p.start()
#later:
while queue.empty():
time.sleep(.1)
x = queue.get()
print(x)