如何编码以在进程之间共享“单调”类的相同实例?
问问题
7297 次
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 回答