与另一个进程共享复杂对象

时间:2013-09-27 12:50:42

标签: python multiprocessing ipc

我确实有一个复杂的数据对象。与另一个python进程共享它的最佳方法是什么?

背景: 为了避免GIL我产生了第二个进行所有计算的过程。它使用UDP登录主进程。该计算过程需要输入数据,这是这个复杂的对象。那么我如何以最简单的方式分享呢?

2 个答案:

答案 0 :(得分:1)

您是否考虑过使用泡菜将其序列化?

import pickle
fid = open(filename,'w')
fid.write(pickle.dumps(data))
fid.close()

然后将其加载到另一个进程中:

fid = open(filename,'r')
directData = fid.read()
data = pickle.loads(directData)
fid.close()

可以使用其他格式进行类似的操作     导入json     fid = open('jsonOutput','w')     fid.write(json.dumps(数据))     fid.close()

如果您不想通过文件传输,则可以通过网络连接进行传输

答案 1 :(得分:0)

我现在正在使用以下内容:

process = multiprocessing.Process(target=start_remote_runner, args=(context,))
process.start()

这会将context - 对象传递给remote_runner。这确实在内部使用pickle来传递对象。