Python에서 다중 처리를 사용할 때 상위 프로세스의 전역 변수를 업데이트하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-08 04:19:01
원래의
750명이 탐색했습니다.

How to Update Global Variables in Parent Process When Using multiprocessing in Python?

전역 변수 업데이트가 다중 처리를 통해 상위에 반영되지 않음

다중 처리에서 새 프로세스를 생성하면 자체 전역 상태를 사용하여 별도의 Python 인스턴스가 시작됩니다. . 하위 프로세스 내의 전역 변수에 대한 수정 사항은 상위 프로세스에 표시되지 않습니다.

이 문제는 다중 처리를 사용하여 프로세스 간에 전송되는 데이터가 일반적으로 피클된다는 사실에서 발생합니다. 피클링을 사용하려면 객체를 직렬화할 수 있어야 하는데, 이는 LORR 인스턴스와 같은 특정 객체에서는 불가능할 수 있습니다.

이 문제를 해결하려면 다음 접근 방식을 고려하세요.

  1. ctype 객체 생성: 데이터를 ctype 객체에 저장하고 메모리 참조를 하위 프로세스에 전달합니다. 그러나 이 방법은 일반적으로 사용되지 않으며 복잡할 수 있습니다.
  2. LORR 서브클래싱: LORR이 클래스이고 서브클래싱이 가능한 경우 getstate를 구현합니다. 피클링을 활성화하는 setstate 메소드. 그러나 이를 위해서는 LORR의 내부 구조에 대한 깊은 이해가 필요합니다.
  3. 큐를 통한 메시징: 또는 큐를 사용하여 프로세스 간에 통신할 수도 있습니다. LORR 인스턴스를 전달하는 대신 특정 메서드 실행을 요청하는 하위 프로세스에 메시지를 보냅니다. 그러면 메서드의 데이터가 대기열을 통해 문자열로 반환될 수 있습니다.

위 내용은 Python에서 다중 처리를 사용할 때 상위 프로세스의 전역 변수를 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿