Python multiprocessing and an imported module -


i have 2 processing running access imported module that:

import foo  def bar():   while true:     foo.a = true  def baz():   while true:     print foo.a  p1 = process(target=bar) p2 = process(target=baz) p1.start() p2.start() 

it seems each process have own instance of module foo, bar() changes value true, in baz() it's false. workaround?

unlike threads, separate processes not share memory. there ways, however, to share data between separate processes. 1 way use mp.value:

foo.py:

import multiprocessing mp = mp.value('b', false) 

then script

import time import foo import multiprocessing mp  def bar():     foo.a.value = true  def baz():     in range(10**5):         print foo.a.value  if __name__ == '__main__':     p2 = mp.process(target=baz)     p2.start()     time.sleep(0.5)     p1 = mp.process(target=bar)     p1.start() 

yields

0 0 0 ... 1 1 1 ... 

for sharing boolean value, mp.event perhaps better option:

foo.py:

import multiprocessing mp = mp.event() 

script.py:

def bar():     foo.a.set()  def baz():     in range(10**5):         print foo.a.is_set() 

yields

false false false ... true true true ...  

Comments

Popular posts from this blog

symfony - InvalidConfigurationException in SecurityExtension.php line 429: No authentication listener registered for firewall "secured_area" -

angular ui router - 10 digest iterations reached in angularjs when using $state.go -

javascript - Handling constructor related functions while testing with mocha and sinon -