与另一个进程共享复杂对象
Posted
技术标签:
【中文标题】与另一个进程共享复杂对象【英文标题】:Share complex object with another process 【发布时间】:2013-09-27 12:50:42 【问题描述】:我确实有一个复杂的数据对象。与另一个 python 进程共享它的最佳方式是什么?
背景:
为了避免GIL
,我生成了第二个进程来完成所有计算。它使用UDP
登录到主进程。这个计算过程需要输入数据,即这个复杂的对象。那么我如何以最简单的方式分享它呢?
【问题讨论】:
【参考方案1】:您是否考虑过使用 pickle 对其进行序列化?
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()
如果您不想通过文件传输,可以通过网络连接传输
【讨论】:
【参考方案2】:我现在正在使用以下:
process = multiprocessing.Process(target=start_remote_runner, args=(context,))
process.start()
这会将context
-object 传递给remote_runner。这确实在内部使用pickle
来传递对象。
【讨论】:
以上是关于与另一个进程共享复杂对象的主要内容,如果未能解决你的问题,请参考以下文章