複雑なデータ オブジェクトがあります。それを別のpythonプロセスと共有する最良の方法は何ですか?
背景: 回避するために、GIL
すべての計算を行う 2 番目のプロセスを生成します。を使用してメインプロセスにログを記録しUDP
ます。この計算プロセスには、この複雑なオブジェクトである入力データが必要です。では、最も簡単な方法で共有するにはどうすればよいでしょうか。
複雑なデータ オブジェクトがあります。それを別のpythonプロセスと共有する最良の方法は何ですか?
背景: 回避するために、GIL
すべての計算を行う 2 番目のプロセスを生成します。を使用してメインプロセスにログを記録しUDP
ます。この計算プロセスには、この複雑なオブジェクトである入力データが必要です。では、最も簡単な方法で共有するにはどうすればよいでしょうか。
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()
ファイル経由で転送したくない場合は、ネットワーク接続経由で転送できます
私は今以下を使用しています:
process = multiprocessing.Process(target=start_remote_runner, args=(context,))
process.start()
これcontext
により、-object が remote_runner に渡されます。これは実際pickle
にオブジェクトを渡すために内部的に使用されます。