【发布时间】:2013-03-23 21:42:00
【问题描述】:
我有 2 个使用 Python 3 运行的应用程序/进程/脚本:有一些简单的 RPC 机制可以在这两个独立的进程之间共享列表、元组和数据结构?
确切地说,这 2 个进程在同一台机器上本地工作,但也可以与远程进程一起工作的通用解决方案将受到高度赞赏。
【问题讨论】:
标签: python data-structures python-3.x share rpc
我有 2 个使用 Python 3 运行的应用程序/进程/脚本:有一些简单的 RPC 机制可以在这两个独立的进程之间共享列表、元组和数据结构?
确切地说,这 2 个进程在同一台机器上本地工作,但也可以与远程进程一起工作的通用解决方案将受到高度赞赏。
【问题讨论】:
标签: python data-structures python-3.x share rpc
如果您使用多处理启动进程,则可以跨进程边界共享 Array 和 Value 变量。
查看this python doc page 使用shared memory 和multiprocessing
...
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[:])...
【讨论】:
这里的值可以是
'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 是强制性的。
【讨论】: