複数の(キーワード)引数を使用したPythonでのマルチプロセッシング[重複]
マルチプロセッシングで2つのjsonファイルを同時に保存しようとしています。この最初の場合、配列をシリアル化する必要があります。いつ割り当てcls=NumpyArrayEncode
クラスでargs
我々が割り当てることができないので、私はエラーを取得していますマルチプロセッシングではcls=NumpyArrayEncode
、おそらく等しいによる=
ログインargs
マルチプロセッシングインチ
以下は、1つのプロセスのみの私のコードです。2番目のプロセスのアイデアは同じです。
# json serialization
class NumpyArrayEncode(JSONEncoder):
def default(self, o):
if isinstance(o, np.ndarray):
returno.tolist()
return JSONEncoder.default(self, o)
json_data = np.array([[3, 5, 6], [8, 12, 6]]) # example
with open('test.json', 'w') as fn:
p1 = multiprocessing.Process(target = json.dump, args=(json_data, fn, cls=NumpyArrayEncode)) # here is problem that we can't add equal `=` sign in `args` in multiprocessing.
cls=NumpyArrayEncode
マルチプロセッシングで引数として追加するにはどうすればよいですか?
親切な提案を探しています
回答
1 sim
2つのオプション:kwargs
パラメータを使用します(キーワード引数を渡すには、multiprocessing.Processドキュメントを参照してください:
multiprocessing.Process(target=json.dump,
args=(json_data, fn),
kwargs={"cls": NumpyArrayEncoder})
またはあなたが使用するfunctools.partial:
multiprocessing.Process(target=functools.partial(json.dump, cls=NumpyArrayEncoder),
args=(json_data, fn))