代码傈子:
import os
def main():
for i in range(0, 2):
os.fork()
print 'Hello world!!'
if __name__ == '__main__':
main()
猜测一下,会输出几行 hello world!!。
执行代码输出:
Hello world!!
Hello world!!
Hello world!!
Hello world!!
Hello world!!
Hello world!!
6行!为什么呢?
首先,你要明白os.fork()创建的子进程会接着下一行代码继续执行,它有返回值,返回值可以为0表示子进程或者大于0表示父进程pid,os.getpid()返回的是当前进程的pid,那么我们再改改输出来看得更直观一些吧:
import os
def main():
for i in range(0, 2):
pid = os.fork()
print "Hello world ->", i, os.getpid(), pid
if __name__ == '__main__':
main()
输出是这样的:
Hello world -> 0 9760 9761
Hello world -> 0 9761 0
Hello world -> 1 9760 9762
Hello world -> 1 9762 0
Hello world -> 1 9761 9763
Hello world -> 1 9763 0
这就很容易解释了:
第一轮循环,父进程创建了一个子进程P1然后打印,子进程P1接着下面的代码运行,打印。之后进入第二轮循环;
第二轮循环,父进程创建了一个子进程P2然后打印,子进程P2接着下面的代码运行,打印。子进程P1再创建了一个子进程P12然后打印,子进程P12接着下面的代码运行,打印。之后循环结束,共打印六次。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
本文链接:https://www.jhelp.net/p/2QF4xPHqbcOz83mF (转载请保留)。