import multiprocessing as mp
import time
def build(q):
print 'I build things'
time.sleep(10)
#return 42
q.put(42)
def run(q):
num = q.get()
print num
if num == 42:
print 'I run after build is done'
return
else:
raise Exception("I don't know build..I guess")
def get_number(q):
q.put(3)
if __name__ == '__main__':
queue = mp.Queue()
run_p = mp.Process(name='run process', target=run, args=(queue,))
build_p = mp.Process(name='build process', target=build, args=(queue,))
s3 = mp.Process(name='s3', target=get_number, args=(queue,))
build_p.start()
run_p.start()
s3.start()
print 'waiting on build'
build_p.join(1) # timeout set to 1 second
s3.join()
print 'waiting on run'
run_p.join()
queue.close()
print 'waiting on queue'
queue.join_thread()
print 'done'
私の目標は、さまざまなワーカーに送信することbuild
であり、続行するには結果を取得する必要があります。run
run
build
あなたの助けに基づいて修正された上記のコードは、チャンスがあるs3
前に返されるため、実際には例外を返します。build
キューの先頭の値は 3 になりました。どうすればbuild
プロセスから確実に回答が返ってくるのでしょうか?
ありがとう。