Python進程專題1:fork():建立子進程、getpid()、getppid()

上一篇文章: Python進程專題總覽篇
下一篇文章: Python進程專題2:multiprocessing建立進程
該方法只能在unix/Linux/Mac上運行,windows不能夠運行。

程序執行到fork()時,操做系統會建立一個新進程(子進程),並把父進程的全部信息賦值到子進程中。算法

這個方法很特殊,會有兩次返回,分別在子進程和父進程返回一次,子進程永遠返回0,父進程返回進程的id.segmentfault

getpid():返回當前進程的idwindows

getppid():返回當前進程父進程的id。操作系統

實例:unix

import os
id=os.fork()
index=0
if id<0:
    print("子進程建立失敗了")
elif id==0:
    index+=1
    print("我是子進程(%d),個人父進程是:%d,index=%d"%(os.getpid(),os.getppid(),index))
else:
    index += 1
    print("我是父進程:%d,個人子進程是:%d,index=%d"%(os.getpid(),id,index))

結果:code

我是父進程:9735,個人子進程是:9736,index=1
我是子進程(9736),個人父進程是:9735,index=1

從上面實例也能夠看出:每一個進程的全部數據(包括全局變量)都各持一份,互不影響。進程

屢次fork()可發現:父子進程執行順序沒有規律,徹底取決於操做系統的調度算法。ip

相關文章
相關標籤/搜索