python单例到多处理
如何编写代码在进程之间共享同一个“singletonic”类实例?进程的全部要点是拥有不同的地址空间。如果您想在进程之间共享信息,您必须使用某种方法。最好是指定一个特定进程作为该实例的所有者并专用于该实例;任何其他需要访问该实例的进程都可以通过队列(由多处理模块提供)或其他IPC消息传递机制将消息发送给拥有该实例的进程来获得该实例,并通过类似机制返回答案。我认为您无法在进程之间共享该实例,但您可以让实例访问共享内存:如果您真的想这样做,则可以控制它的状态python单例到多处理,python,multiprocessing,Python,Multiprocessing,如何编写代码在进程之间共享同一个“singletonic”类实例?进程的全部要点是拥有不同的地址空间。如果您想在进程之间共享信息,您必须使用某种方法。最好是指定一个特定进程作为该实例的所有者并专用于该实例;任何其他需要访问该实例的进程都可以通过队列(由多处理模块提供)或其他IPC消息传递机制将消息发送给拥有该实例的进程来获得该实例,并通过类似机制返回答案。我认为您无法在进程之间共享该实例,但您可以让实例访问共享内存:如果您真的想这样做,则可以控制它的状态 但是,正如其他答案中所述,使用队列可能更
但是,正如其他答案中所述,使用队列可能更容易实现您想要的功能。在Python 2.6中,
多处理
模块使用了一个值
对象。它们有一个代码示例,可以让您了解如何以这种方式共享状态,您可以在编写单例类时使用这种方法。您还可以使用一种多处理.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
输出如下所示:
[1,2]
有一个提供,但您需要父进程将共享对象传递给子对象