6

如何编码以在进程之间共享“单调”类的相同实例?

4

5 回答 5

7

最好是指定一个特定的进程拥有该实例并专用于它;任何其他需要访问该实例的进程通过队列(由多处理模块提供)或其他用于消息传递的 IPC 机制向拥有进程发送消息来获得它,并通过类似机制获得答案。

于 2009-07-10T14:37:28.603 回答
5

进程的全部意义在于拥有不同的地址空间。如果要在进程之间共享信息,则必须使用某种进程间通信方式。

于 2009-07-10T14:35:52.337 回答
2

我不认为你可以在进程之间共享实例,但你可以让实例访问共享内存:http ://docs.python.org/library/multiprocessing.html#sharing-state-between-processes来控制它的状态如果这真的是你想要做的。

但是,正如其他答案中所述,使用队列可能更容易实现您想要的。

于 2009-07-10T14:44:14.613 回答
2

在 Python 2.6 中,该multiprocessing模块有一个Value用于在进程之间共享状态的对象。他们有一个代码示例,可以让您了解如何以这种方式共享状态,并且您可以在编写单例类时使用这种方法。

于 2009-07-10T14:47:41.520 回答
1

您还可以使用其中一种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

输出看起来像:

[1, 2]

提供了多种数据结构,但您需要父进程将共享对象传递给子对象。

于 2020-10-22T00:32:45.013 回答