Python中具有多个(关键字)参数的多处理
我试图在多处理中同时保存2个json文件。 首先,我需要序列化数组。当我在多处理中的Python中具有多个(关键字)参数的多处理,python,multiprocessing,Python,Multiprocessing,我试图在多处理中同时保存2个json文件。 首先,我需要序列化数组。当我在多处理中的args中分配cls=numpyarayencode类时,我得到了一个错误,因为我们无法分配cls=numpyarayencode可能是由于在多处理中等于=登录args 下面是我只针对一个进程的代码。对于第二个过程的想法是相同的 # json serialization class NumpyArrayEncode(JSONEncoder): def default(self, o): i
args
中分配cls=numpyarayencode
类时,我得到了一个错误,因为我们无法分配cls=numpyarayencode
可能是由于在多处理中等于=
登录args
下面是我只针对一个进程的代码。对于第二个过程的想法是相同的
# 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=numpyarayencode
作为参数
查找种类建议两个选项:使用
kwargs
参数(请参见传递关键字参数:
multiprocessing.Process(target=json.dump,
args=(json_data, fn),
kwargs={"cls": NumpyArrayEncoder})
或者您使用:
实际上不是。我已经读过上面提到的帖子,但它和我的问题不同。
multiprocessing.Process(target=functools.partial(json.dump, cls=NumpyArrayEncoder),
args=(json_data, fn))