인스턴스 변수는 Python의 프로세스 간에 공유되지 않습니다.

WBOY
풀어 주다: 2024-02-09 09:09:04
앞으로
592명이 탐색했습니다.

Python 中进程之间不共享实例变量

질문 내용

멀티 프로세싱에 큰 문제가 있습니다. 이 경우에는

1. 메인프로세스의 메인클래스

2. 다른 프로세스의 foo 클래스

메인 프로세스를 사용하여 process2 내부의 일부 변수를 변경해야 합니다. 어떻게 해야 하나요/? ? ?

class Main:
     def __init__(self):
          self.Foo_Instance = Foo()
          multiprocessing.Process(target=self.Foo_Instance.do_something).start()

     def Change_Foo(self):
          Foo_Instance.ImportantVar = True
    
class Foo:
     def __init__(self):
          self.ImportantVar = False

     def do_something(self):
          pass

Main_Instance = Main()
Main_Instance.Change_Foo()
로그인 후 복사

정답


각 프로세스에는 일반적으로 다른 프로세스가 접근할 수 없는 자체 메모리가 있습니다. 한 프로세스가 다른 프로세스에서 사용 중인 변수를 수정할 수 있도록 하려면 가장 간단한 해결책은 공유 메모리에 변수를 만드는 것입니다. 아래 데모에서는 업데이트된 값을 인쇄하기 위해 multiprocessing.value一个>实例。为了证明 main.change_foo 可以修改 fooimportantvar 属性,我们必须在 main.change_foo 修改它之前给 foo.do_something 一个打印出其初始值的机会。同样, foo.do_something 需要等待 main.change_foo를 사용하여 값을 변경합니다. 이를 달성하기 위해 우리는 두 개의 'multiprocessing.event' 인스턴스를 사용합니다:

으아악

인쇄:

으아악

위 내용은 인스턴스 변수는 Python의 프로세스 간에 공유되지 않습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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