2013-09-27 24 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()

如果你不想通過要傳輸的文件,你可以傳輸通過網絡連接