调用进程的getter返回非

2024-09-28 19:28:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在努力使我的程序使用multiprocessing.Process,我想从我的Process子类中获取一个对象

内部main.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时,它总是无。
如何在不使用多处理队列的情况下让它工作? (在我看来,当只处理一个对象一次时,队列既不可读也不有用)


Tags: to对象pyself程序none队列main
1条回答
网友
1楼 · 发布于 2024-09-28 19:28:10

可以使用多处理管道;) 但说真的,您必须使用进程间通信来在进程之间共享数据。下面是一个从子进程中检索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)

相关问题 更多 >