【发布时间】:2018-10-30 15:30:42
【问题描述】:
运行以下代码然后执行Ctrl+C 可以让p1、p2、p3 和p4 在后台运行(其中Ctrl+C 什么都不做)。
如何在主进程中使用KeyboardInterrupt,使其同时停止所有子进程?
import time
from multiprocessing import Process
def process(proc_n):
while True:
try:
pass
except KeyboardInterrupt:
break
except Exception as e:
print(e)
time.sleep(0.5)
def main():
p1 = Process(target=process, args=(1,))
p2 = Process(target=process, args=(2,))
p3 = Process(target=process, args=(3,))
p4 = Process(target=process, args=(4,))
p1.start()
p2.start()
p3.start()
p4.start()
if __name__ == '__main__':
main()
【问题讨论】:
-
如果您不想为子进程执行一些清理代码,您可以简单地将它们设置为守护进程,如果主线程终止,它们将终止。
p1 = Process(target=process, args=(1,), daemon=True) -
@Sraw 如果您将您的评论作为答案发表,我会接受 - 这正是我想要的。
标签: python python-3.x multiprocessing signals python-multiprocessing