0

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

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

4

2 回答 2

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()

其他格式也可以做类似的事情 import json fid = open('jsonOutput','w') fid.write(json.dumps(data)) fid.close()

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

于 2013-09-27T13:41:44.557 回答
0

我现在正在使用以下:

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

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

于 2013-10-06T19:59:22.470 回答