我确实有一个复杂的数据对象。与另一个python进程共享它的最佳方法是什么?
背景:
为了避免GIL
我产生了第二个进行所有计算的过程。它使用UDP
登录主进程。该计算过程需要输入数据,这是这个复杂的对象。那么我如何以最简单的方式分享呢?
答案 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
来传递对象。