在python文档中,在进程之间共享数据下,Manager.list()和Manager.dict()方法看起来很有希望。
尚不清楚的是它们是否提供真正的内存共享,或者列表/字典是否仍被腌制到单独的进程中。根据我的性能指标,我猜酸洗仍在进行。
服务器进程
Manager()返回的管理器对象控制服务器进程, 持有Python对象并允许其他进程操纵它们 使用代理。由Manager()返回的经理将支持类型 列表,字典,命名空间,锁,RLock,信号量,BoundedSemaphore, 条件,事件,队列,值和数组。例如,来自 多处理导入流程,经理
def f(d, l):
d[1] = '1'
d['2'] = 2
d[0.25] = None
l.reverse()
if __name__ == '__main__':
manager = Manager()
d = manager.dict()
l = manager.list(range(10))
p = Process(target=f, args=(d, l))
p.start()
p.join()
print d
print l
will print
{0.25: None, 1: '1', '2': 2}
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
服务器进程管理器比使用共享内存更灵活 对象,因为可以使它们支持任意对象类型。 同样,单个经理可以由不同的进程共享 网络上的计算机。但是,它们比使用共享的速度慢 记忆。
我相信我可能会使用ctypes,但是不确定是否可以容纳所有从Oracle返回的类型。