>  기사  >  백엔드 개발  >  인스턴스 변수는 Python의 프로세스 간에 공유되지 않습니다.

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

WBOY
WBOY앞으로
2024-02-09 09:09:04582검색

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으로 문의하시기 바랍니다. 삭제