如何编写代码以在进程之间共享“单例”类的同一实例?
multiprocessing
模块有一个Value
对象,用于在进程之间共享状态。他们提供了一个代码示例,可以帮助你理解如何以这种方式共享状态,并且在编写单例类时可以使用这种方法。您还可以使用multiprocessing.manager
共享数据类型之一。
import multiprocessing as mp
manager = mp.Manager()
shared_list = manager.list()
def worker1(l):
l.append(1)
def worker2(l):
l.append(2)
process1 = mp.Process(target=worker1, args=[shared_list])
process2 = mp.Process(target=worker2, args=[shared_list])
process1.start()
process2.start()
process1.join()
process2.join()
print shared_list