2013-09-27 22 views
0

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

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

回答

0

我现在使用如下:

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

这传递context -object到remote_runner。这确实在内部使用pickle来传递对象。

1

你有没有考虑使用泡菜序列化?

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

然后加载它在其他过程:相似可以与其他格式 进口JSON FID =开放( 'jsonOutput', 'W') fid.write进行

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

东西(json.dumps(数据)) fid.close()

如果你不想通过要传输的文件,你可以传输通过网络连接