Python 다중 처리에서 프로세스 간에 데이터를 공유하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-06 16:23:02
원래의
1074명이 탐색했습니다.

How to Share Data Between Processes in Python Multiprocessing?

멀티프로세싱에서 전역 변수 업데이트가 상위로 반환되지 않음

멀티프로세싱에서는 프로세스마다 새 Python 인스턴스가 생성되어 고유한 전역 변수가 생성됩니다. 상태. 따라서 하위 프로세스에서 수행한 전역 변수에 대한 업데이트는 상위 프로세스에 표시되지 않습니다.

선택할 수 없는 개체

다중 처리는 피클을 통한 직렬화에 의존합니다. 교환하려는 객체를 피클할 수 없으면 프로세스 간에 공유할 수 없습니다. 여기에는 Manager 개체 내에 저장되었거나 대기열을 통해 전송된 모든 데이터가 포함됩니다.

대체 접근 방식

  • 사용자 정의 상태 관리: 솔루션 사용을 고려하세요. 공유 메모리나 데이터베이스와 같은 다중 처리 모듈 외부에서 프로세스 전체 상태를 관리합니다.
  • 하위 클래스화 및 피클링: 피클할 수 없는 객체가 Python 클래스인 경우 다음 가능성을 조사하세요. 하위 클래스로 분류하고 getstatesetstate 메서드를 구현하여 피클링을 활성화합니다.
  • 큐를 통한 데이터 교환: 피클할 수 없는 객체를 직접 전달하는 대신 전송을 고려하세요. 대기열을 통해 필요한 데이터를 문자열 또는 기타 직렬화 가능한 형식으로 처리합니다. 이를 통해 하위 프로세스가 객체 직렬화 없이도 데이터를 조작할 수 있습니다.

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

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