import multiprocessing as mp
def delay_one_second(event):
print 'in SECONDARY process, preparing to wait for 1 second'
event.wait(1)
print 'in the SECONDARY process, preparing to raise the event'
event.set()
if __name__=='__main__':
evt = mp.Event()
print 'preparing to wait 10 seconds in the PRIMARY process'
mp.Process(target = delay_one_second, args=(evt,)).start()
evt.wait(10)
print 'PRIMARY process, waking up'
このコード (cmd.exe 内の "python module.py" コマンドを使用してモジュール内から適切に実行) は、驚くべき結果をもたらします。
メイン プロセスは明らかに 1 秒だけ待ってからウェイクアップします。これが発生するのは、セカンダリ プロセスがメイン プロセス内のオブジェクトへの参照を持っていることを意味します。
どうすればいいの?プロセス間でオブジェクトを共有するには、multiprocessing.Manager() を使用する必要があると予想していましたが、これはどのように可能ですか?
つまり、プロセスはスレッドではなく、同じメモリ空間を使用すべきではありません。ここで何が起こっているのか、誰にもアイデアがありますか?