在2个Python进程之间共享数据结构

时间:2013-04-02 14:28:42

标签: python data-structures python-3.x share rpc

我有2个运行Python 3的应用程序/进程/脚本:有一些简单的RPC机制可以在这两个独立的进程之间共享列表,元组和数据结构吗?

准确地说,这2个进程在本地工作,在同一台机器上,但是也可以使用可以与远程进程一起使用的通用解决方案。

2 个答案:

答案 0 :(得分:5)

如果您使用多处理启动流程,则可以跨进程边界共享ArrayValue个变量。

使用shared memorymultiprocessing

查看this python doc page
  

...

from multiprocessing import Process, Value, Array

def f(n, a):
    n.value = 3.1415927
    for i in range(len(a)):
        a[i] = -a[i]

if __name__ == '__main__':
    num = Value('d', 0.0)
    arr = Array('i', range(10))

    p = Process(target=f, args=(num, arr))
    p.start()
    p.join()

    print(num.value)
    print(arr[:])
     

...

答案 1 :(得分:2)

这里的值可以是

'c': ctypes.c_char,  'u': ctypes.c_wchar,
'b': ctypes.c_byte,  'B': ctypes.c_ubyte,
'h': ctypes.c_short, 'H': ctypes.c_ushort,
'i': ctypes.c_int,   'I': ctypes.c_uint,
'l': ctypes.c_long,  'L': ctypes.c_ulong,
'f': ctypes.c_float, 'd': ctypes.c_double

因此初始化将根据它。

但是params num和args是强制性的。