在我的(非常简化的)场景中,在Python 2.7中,我有两个进程:
子进程在 X 秒后执行以下代码(简化版本):
问题在于它会使父进程成为僵尸进程,因为父进程仍然存活,子进程永远不会退出。
相同的代码在Windows上按预期工作。
我看到的所有解决方案都在谈论父进程通过调用 "killer.join()" 等待子进程完成,但在我的情况下,父进程执行任务,不应等待其子进程。
如何处理这种情况的最佳方法是什么?
- 父进程,执行一些任务。
- 子进程,在X时间后需要杀死父进程。
killer = multiprocessing.Process(...)
killer.start()
子进程在 X 秒后执行以下代码(简化版本):
process = psutil.Process(parent_pid)
...
if time_elapsed:
while True:
process.kill()
if not process.is_alive:
exit()
问题在于它会使父进程成为僵尸进程,因为父进程仍然存活,子进程永远不会退出。
相同的代码在Windows上按预期工作。
我看到的所有解决方案都在谈论父进程通过调用 "killer.join()" 等待子进程完成,但在我的情况下,父进程执行任务,不应等待其子进程。
如何处理这种情况的最佳方法是什么?
killer.daemon = True
设置为真有帮助吗? - John Andersonthreading.event
的东西,但现在直接杀死它对我来说已经足够了。 - macro_controller