import os
import pdb
def timeConsumingFunction():
x=1
for n in xrange(100000000):
x+=1
print "child runnig",x
return x
x=1
child=-1
for n in xrange(100000):
x+=1
print "parent running",x
if x>50000:
pid=os.fork()
if pid>0:
child=pid
else:
print timeConsumingFunction()
os._exit(0)
os.waitpid(child,0)
print "hello"
我想先从0到50000打印父级,当它达到50000时,必须启动一个新的子进程,然后父级和子级应继续并行执行。但是在达到50000后这段代码中,它停止执行“并行运行”语句。
答案 0 :(得分:1)
您的代码将产生许多许多(理论上最多50000)个孩子,而不仅仅是一个。当操作系统允许时,父母可能会继续运行,但是你可能无法在它开始的众多孩子的输出风暴下看到它的输出。
尝试将x > 50000
条件更改为x == 50000
,我怀疑它会按照您的意图运行,只有一个孩子在父母旁边运行。