python的子进程一旦跑起来可就不停下了,这不停下ctrl+c也中断不了,导致在运行的时候会出现想让他停止但是却停止不了的问题,那么为了解决这个问题,可以使用multiprocessing 中的event进行进程间通信。
def traffic_light(e):
while True:
if e.is_set():
print('444')
break
print(1)
time.sleep(1)
# def people(e, i):
# if not e.is_set():
# e.wait()
if __name__ == '__main__':
e = Event()
print(e)
p = Process(target=traffic_light, args=(e,))
# p.daemon = True
p.start()
try:
while True:
time.sleep(3)
e.set()
except KeyboardInterrupt:
e.set()
通过e=event()获取对象,把这个对象放进进程中,当用except捕捉键盘中断的时候用e.set把对象置位True, 在需要终止的子进程中的while True 下面进行一个判断,如果是True就break,如果你里面有多重while True 就每一级每一级地break