我试图在两个进程之间使用一个对象(类Event)。主进程创建对象(自我事件)并将其作为args传递给新进程。新进程将调用foo1()中Event()的inject()方法,当调用foo2()时,主进程将再次调用restore。你知道吗
from multiprocessing import Process, Queue
class Event:
def __init__(self):
print('init')
self.i = None
def inject(self):
print(self.i)
self.i = 100
print(self.i)
def restore(self):
print(self.i)
class Test:
def __init__(self):
self.event = Event()
def foo1(self):
p1 = Process(target=self.foo1_target, args=(self.event,))
p1.start()
p1.join()
def foo1_target(self, event):
event.inject()
def foo2(self):
self.event.restore()
t = Test()
t.foo1()
t.foo2()
当我运行t.foo1()时,它会打印
None
100
当我运行t.foo2()时,它会打印
None
我的理解是t.foo2()应该打印100。我不明白为什么它没有打印。另外,如何在主进程和新进程之间使用事件对象?你知道吗
我能够通过使用线程中的信号量和线程来实现这一点。地址:
相关问题 更多 >
编程相关推荐