父进程结束
from multiprocessing import Processimport time, osdef task():print('%s is running,parent id is <%s>' % (os.getpid(), os.getppid()))time.sleep(3)print('%s is done,parent id is <%s>' % (os.getpid(), os.getppid()))if __name__ == '__main__':p = Process(target=task, )p.start() # 开启子进程print('主', os.getpid(), os.getppid())print(2 / 0) # 父进程结束后,子进程仍然正常运行
观察:父进程结束后,无论正常还是异常结束,都不会影响子进程。
子进程结束
from multiprocessing import Processimport time, osdef task():print('%s is running,parent id is <%s>' % (os.getpid(), os.getppid()))print(2 / 0) # 子进程异常结束后,父进程仍然正常运行print('%s is done,parent id is <%s>' % (os.getpid(), os.getppid()))if __name__ == '__main__':p = Process(target=task, )p.start() # 开启子进程time.sleep(3)print('主', os.getpid(), os.getppid())
观察:子进程结束后,无论正常还是异常结束,都不会影响父进程。
总结
- 父进程和子进程互不影响
 - 父进程会等待子进程
 
