多处理,包含事件的共享对象

Multiprocessing, shared object which contains events

我想共享一个标志对象,该对象将包含多个 multiprocessing.event 对象以与 Multiprocessing 创建的多个 python 进程进行通信。

这行得通吗?

您可以执行如下操作。 Class Foo 在内部创建一个 multiprocessing.Event 对象的列表(在本例中只有 1 个对象用于演示目的)并且 Foo 的一个实例被传递给两个进程:

from multiprocessing import Process, Event
import time


class Foo:
    def __init__(self):
        self.lst = []
        self.lst.append(Event())

def worker1(foo):
    event = foo.lst[0]
    t = time.time_ns()
    print('Waiting for event to be set...')
    event.wait()
    print('Wait satisfied, elapsed time =', (time.time_ns() - t) / 1_000_000_000.0)

def worker2(foo):
    event = foo.lst[0]
    time.sleep(2)
    event.set()

def main():
    foo = Foo()
    p1 = Process(target=worker1, args=(foo,))
    p2 = Process(target=worker2, args=(foo,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()

if __name__ == '__main__':
    main()

打印:

Waiting for event to be set...
Wait satisfied, elapsed time = 2.0112978