上一篇文章: 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