当前位置:天才代写 > tutorial > Python教程 > python中fork()函数生成子历程阐明

python中fork()函数生成子历程阐明

2017-11-02 08:00 星期四 所属: Python教程 浏览:52

   python的os module中有fork()函数用于生成子历程,生成的子历程是父历程的镜像,可是它们有各自的地点空间,子历程复制一份父历程内存给本身,两个历程之 间的执行是彼此独立的,其执行顺序可以是不确定的、随机的、不行预测的,这点与多线程的执行顺序相似。  

import os
def child():
    print 'A new child:', os.getpid()
    print 'Parent id is:', os.getppid()
    os._exit(0)
def parent():
    while True:
        newpid=os.fork()
        print newpid
        if newpid==0:
            child()
        else:
            pids=(os.getpid(),newpid)
            print "parent:%d,child:%d"%pids
            print "parent parent:",os.getppid()       
        if raw_input()=='q':
            break
parent()

    在我们加载了os模块之后,我们parent函数中fork()函数生成了一个子历程,返回值newpid有两个,一个为0,用以暗示子历程,一个是大于 0的整数,用以暗示父历程,这个常数正是子历程的pid. 通过print语句我们可以清晰看到两个返回值。假如fork()返回值是一个负值,则表白子历程生成不乐成(这个简朴措施中没有思量这种环境)。假如 newpid==0,则表白我们进入到了子历程,也就是child()函数中,在子历程中我们输出了本身的id和父历程的id。假如进入了else语句, 则表白newpid>0,我们进入到父历程中,在父历程中os.getpid()获得本身的id,fork()返回值newpid暗示了子历程的id,同时我们输出了父历程的父历程的id. 通过尝试我们可以看到if和else语句的执行顺序是不确定的,子、父历程的执行顺序由操纵系统的调治算法来抉择。

 

    关键字:


天才代写-代写联系方式