父进程结束
from multiprocessing import Process
import time, os
def 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 Process
import time, os
def 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())
观察:子进程结束后,无论正常还是异常结束,都不会影响父进程。
总结
- 父进程和子进程互不影响
- 父进程会等待子进程