父进程结束

  1. from multiprocessing import Process
  2. import time, os
  3. def task():
  4. print('%s is running,parent id is <%s>' % (os.getpid(), os.getppid()))
  5. time.sleep(3)
  6. print('%s is done,parent id is <%s>' % (os.getpid(), os.getppid()))
  7. if __name__ == '__main__':
  8. p = Process(target=task, )
  9. p.start() # 开启子进程
  10. print('主', os.getpid(), os.getppid())
  11. print(2 / 0) # 父进程结束后,子进程仍然正常运行

观察:父进程结束后,无论正常还是异常结束,都不会影响子进程。
进程ID.gif

子进程结束

  1. from multiprocessing import Process
  2. import time, os
  3. def task():
  4. print('%s is running,parent id is <%s>' % (os.getpid(), os.getppid()))
  5. print(2 / 0) # 子进程异常结束后,父进程仍然正常运行
  6. print('%s is done,parent id is <%s>' % (os.getpid(), os.getppid()))
  7. if __name__ == '__main__':
  8. p = Process(target=task, )
  9. p.start() # 开启子进程
  10. time.sleep(3)
  11. print('主', os.getpid(), os.getppid())

观察:子进程结束后,无论正常还是异常结束,都不会影响父进程。
进程ID.gif

总结

  • 父进程和子进程互不影响
  • 父进程会等待子进程