다중 (키워드) 인수를 사용하여 Python에서 다중 처리 [중복]

Jan 11 2021

다중 처리에서 2 개의 json 파일을 동시에 저장하려고합니다. 이를 위해 먼저 배열을 직렬화해야합니다. 언제 할당 cls=NumpyArrayEncode의 클래스 args우리가 지정할 수 없기 때문에 다음 멀티 프로세싱에 내가 오류를 받고 있어요 cls=NumpyArrayEncode때문에 동일한에 아마 =의 기호 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=NumpyArrayEncode다중 처리에서 인수 로 추가하는 방법은 무엇입니까?

친절한 제안을 찾고

답변

1 sim Jan 11 2021 at 14:49

두 가지 옵션 : 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))