【发布时间】:2018-04-22 00:45:19
【问题描述】:
我使用多处理模块在 Python 3 中编写了以下代码。它更像是一个测试脚本,看看如何使用Event。但是,它不起作用。
import multiprocessing, time
from multiprocessing import Process, Event
event = Event()
def f(n):
if n == 1:
print("starting")
event.wait()
print("Done!")
if n == 2:
time.sleep(3)
event.set()
print("setting")
if __name__ == "__main__":
p1 = Process(target = f, args = (1,))
p2 = Process(target = f, args = (2,))
p1.start()
p2.start()
time.sleep(1000)
但是,当我运行它时,我只会得到输出:
starting
setting
我想得到输出:
starting
setting
Done!
但由于某种原因,p1 进程在p2 进程调用 event.set() 后并未继续执行其代码。
任何想法为什么会发生这种情况?
【问题讨论】:
-
我在本地测试,它确实有效,你使用的是哪个操作系统平台?是 Windows 吗?
-
我又试了一次还是不行!我让它工作了一次,但它不再工作了。我在 Windows 上。任何想法为什么会发生这种情况?
-
我正在回答这个问题,但你取消了它...让我再试一次。
标签: python events multiprocessing