Discuss / Python / 多进程——父进程和子进程没有执行的先后

多进程——父进程和子进程没有执行的先后

Topic source

我在老师的代码中为父子进程添加了不同时间的休眠:

import os, time
print('Process (%s) start...' % os.getpid())
pid = os.fork()      # 从这里开始复制出了子进程,父子进程开始同时执行后面的代码. fork() 在子进程中返回0,父进程中返回子进程的pid
if pid == 0:    # 如果是子进程
    time.sleep(10)
    print('I am child process (%s) and my parent is %s' % (os.getpid(), os.getppid()))
else:           # 如果是父进程
    time.sleep(100)
    print('I (%s) just created a child process (%s)' % (os.getpid(), pid))

与老师的反馈不同的是(老师的terminal返回的是父进程先print内容,而后子进程print内容),子进程由于休眠时间短所以先于父进程print出结果:

Process (2702) start...
I am child process (2703) and my parent is 2702
I (2702) just created a child process (2703)

是没有的,因为父进程和子进程其实更多是逻辑关系,而且类似失去父进程的‘孤儿进程’也是实际需要解决的问题(在py原文档和各个网站啃了一两天..)

廖雪峰

#3 Created at ... [Delete] [Delete and Lock User]

进程调度是操作系统决定的,千万不要在代码里假定哪个先执行。


  • 1

Reply