ホームページ  >  記事  >  バックエンド開発  >  インスタンス変数は Python のプロセス間で共有されません

インスタンス変数は Python のプロセス間で共有されません

WBOY
WBOY転載
2024-02-09 09:09:04534ブラウズ

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

質問内容

マルチプロセッシングに関して大きな問題があります。この場合、私は

を持っています

1. メインプロセスのメインクラス

2. 別のプロセス内のクラス foo

メインプロセスを使用して、プロセス2内のいくつかの変数を変更する必要があります。 これどうやってするの/? ? ?

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_foofoo importantvar 属性を変更できることを証明するには、main.change_foo が変更する前に foo を指定する必要があります。 it .do_something 初期値を出力する機会。同様に、foo.do_something は、更新された値を出力する前に、main.change_foo が値を変更するのを待つ必要があります。これを実現するには、2 つの 'multiprocessing.event' インスタンスを使用します。 リーリー

印刷:

リーリー

以上がインスタンス変数は Python のプロセス間で共有されませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。