2016-04-28 14 views
-1

メインアプリケーションでdictをn秒ごとに更新する子プロセスを作成する必要があります。Python:親プロセスが使用するグローバルリソースを更新するための子プロセス

この辞書は、親プロセスによってグローバル変数として使用されます。ここで

は私がやろうとしています何の擬似コードです:

dict_ = {"a":12,"b":23} 


def child_process() 
    global dict_ 
    while True: 
     # update dict_ 
     time.sleep(n) 

def parent_process(): 
    global dict_ 
    # use dict_ WITHOUT MODIFYING IT 

if __name__ == '__main__': 
    # 1- run child process 
    # 2- run parent process 

私はマルチプロセッシングについて多くを見つけましたが、私は鋼が、私はこれを行うことができる方法を見つけ出すことはできません。

+0

あなたはそれを変更せずにどういう意味ですか?ちょうどそれを変更しないでください? – Natecat

+0

'a'と' b'を読んだだけですが、dictを変更せずに... 'child_process'はdict_を修正し、' parent_process'はこの新鮮なデータを使用します – farhawa

+1

[Ask before](https://docs.python .org/2/library/multiprocessing.html#multiprocessing.Value) – Natecat

答えて

1

通常、データまたは結果を共有するために、マルチプロセスまたはスレッド化でqueueを使用します。しかし、listdictManagersのようなpythonの構造体では、ここをクリックしてください:

from multiprocessing import Process, Manager 

dict_ = Manager().dict({"a":12,"b":23}) 

def child_process(_dict): 
    while _dict['b'] < 30: 
     _dict['b'] += 1 

if __name__ == '__main__': 
    proc = Process(target=child_process, args=(dict_,)) 
    proc.start() 
    # Here output printed is value from 23 to 30. 
    # while proc.is_alive(): 
    #  print dict_.get("b") 
    proc.join() 
    print dict_.get("b") # prints 30 
関連する問題