>백엔드 개발 >파이썬 튜토리얼 >다중 처리에서 하위 프로세스의 전역 변수를 업데이트하고 상위 프로세스에서 액세스할 수 있도록 하려면 어떻게 해야 합니까?

다중 처리에서 하위 프로세스의 전역 변수를 업데이트하고 상위 프로세스에서 액세스할 수 있도록 하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-06 15:08:02380검색

How do I update global variables from child processes in multiprocessing and ensure they are accessible by the parent process?

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

멀티프로세싱을 활용하여 보조 프로세스를 구축할 때 고유한 Python 인스턴스가 생성됩니다. 글로벌 상태. 이 전역 상태는 격리되어 하위 프로세스에 의한 전역 변수에 대한 모든 수정 사항이 상위 프로세스에 보이지 않게 렌더링됩니다.

게다가 대부분의 다중 처리 추상화는 피클을 활용하여 데이터를 전송합니다. 관리자가 제공한 모든 개체를 포함하여 프록시를 통해 전달되는 모든 데이터는 피클 가능해야 합니다. 관리자 섹션에서는 다른 프로세스가 프록시를 사용하여 공유 개체에 액세스할 수 있다는 점을 강조합니다.

문서에는 이 정보가 생략되어 있지만 대기열에도 유사한 제한 사항이 적용됩니다. 빠른 테스트를 통해 대기열의 모든 데이터도 피클 가능해야 함을 확인할 수 있습니다.

데이터 피클링이 여전히 불가능하다면 이를 ctype 객체로 저장하고 메모리 참조를 하위 프로세스에 전달하는 것이 좋습니다. 이 접근 방식은 다소 위험하므로 다른 옵션이 소진되는 상황에서만 사용해야 합니다.

귀하의 경우 LORR의 복잡성을 이해하는 것이 중요합니다. Python 클래스인 경우 하위 클래스로 분류하고 setstategetstate 메서드를 정의하면 피클링이 용이해질 수 있습니다.

또는 LORR 인스턴스에서 필요한 데이터를 추출하여 전달합니다. 간단한 문자열을 통해 충분할 수 있습니다. 위의 도식에 설명된 대로 대기열을 활용하여 기본 프로세스와 하위 프로세스 간에 메시지를 보내 개체 메서드를 직접 호출하는 것을 고려해 보세요.

위 내용은 다중 처리에서 하위 프로세스의 전역 변수를 업데이트하고 상위 프로세스에서 액세스할 수 있도록 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.