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

WBOY
リリース: 2024-02-09 09:09:04
転載
590 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート