【问题标题】:Sharing data structures between 2 Python processes在 2 个 Python 进程之间共享数据结构
【发布时间】:2013-03-23 21:42:00
【问题描述】:

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

确切地说,这 2 个进程在同一台机器上本地工作,但也可以与远程进程一起工作的通用解决方案将受到高度赞赏。

【问题讨论】:

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


    【解决方案1】:

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

    查看this python doc page 使用shared memorymultiprocessing

    ...

    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[:])
    

    ...

    【讨论】:

    • 谢谢,关于如何为每个进程共享正确 ID 的任何提示?
    【解决方案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
    

    因此初始化将根据它进行。

    但参数 num 和 args 是强制性的。

    【讨论】:

      猜你喜欢
      • 2020-08-24
      • 2015-03-29
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多