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() 在进程之间共享对象,但这怎么可能呢?
我的意思是进程不是线程,它们不应该使用相同的内存空间。有人知道这里发生了什么吗?