Multiprocessamento em Python com vários argumentos (palavra-chave) [duplicado]
Estou tentando salvar 2 arquivos json ao mesmo tempo no multiprocessamento. Para isso, primeiro preciso serializar a matriz. Quando eu atribuo cls=NumpyArrayEncode
classe no args
multiprocessamento, estou recebendo um erro porque não podemos atribuir cls=NumpyArrayEncode
provavelmente devido ao =
sinal de igual args
no multiprocessamento.
Abaixo está meu código apenas para um processo. Para o segundo processo, a ideia é a mesma.
# 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.
Como adicionar cls=NumpyArrayEncode
argumentos no multiprocessamento?
Procurando uma sugestão gentil
Respostas
1 sim
Duas opções: Use o kwargs
parâmetro (consulte a multiprocessing.Processdocumentação para passar argumentos de palavra-chave:
multiprocessing.Process(target=json.dump,
args=(json_data, fn),
kwargs={"cls": NumpyArrayEncoder})
ou você usa functools.partial:
multiprocessing.Process(target=functools.partial(json.dump, cls=NumpyArrayEncoder),
args=(json_data, fn))
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino