對(duì)python中的os.getpid()和os.fork()函數(shù)詳解
如下所示:
import os
import sys
import time
processNmae = 'parent'
print "Program executing ntpid:%d,processNmae:%s"%(os.gitpid(),processNmae)
#attempt to fork child process
try:
forkPid = os.fork()
except OSError:
sys.exit("Unable to create new process.")
# Am I parent process?
if forkPid != 0:
print "Parent executingn"+"tpid:%d,forkPid:%d,processNmae:%s"%(os.getpid(), forkPID,processName)
# Am I child process?
elif forkPID == 0:
processName = "child"
print "Child executingn" + "tpid: %d, forkPID: %d, processName: %s" % (os.getpid(), forkPID,processName)<br>
print "Process finishingntpid: %d, processName: %s" % (os.getpid(), processName)
程序每次執(zhí)行時(shí),操作系統(tǒng)就會(huì)創(chuàng)建一個(gè)新的進(jìn)程來(lái)運(yùn)行程序指令。進(jìn)程還可以調(diào)用os.fork,要求操作系統(tǒng)新建一個(gè)進(jìn)程。
“父進(jìn)程”是調(diào)用os.fork的進(jìn)程。父進(jìn)程所創(chuàng)建的任何進(jìn)程都是子進(jìn)程。
每個(gè)進(jìn)程都有一個(gè)不重復(fù)的“進(jìn)程ID號(hào)”,或稱“pid”,它對(duì)進(jìn)程進(jìn)程進(jìn)行標(biāo)識(shí)。
進(jìn)程調(diào)用fork函數(shù)時(shí),操作系統(tǒng)會(huì)新建一個(gè)子進(jìn)程,它本質(zhì)上與父進(jìn)程完全相同。子
進(jìn)程從父進(jìn)程繼承了多個(gè)值的拷貝,比如全局變量和環(huán)境變量。兩個(gè)進(jìn)程唯一的區(qū)別就是fork的返回值。
child(子)進(jìn)程接收返回值為0,而父進(jìn)程接收子進(jìn)程的pid作為返回值。調(diào)用fork函數(shù)后,兩個(gè)進(jìn)程并發(fā)執(zhí)行同一個(gè)程序,
首先執(zhí)行的是調(diào)用了fork之后的下一行代碼。父進(jìn)程和子進(jìn)程既并發(fā)執(zhí)行,又相互獨(dú)立;也就是說(shuō),它們是“異步執(zhí)行”的。
import os
pid=os.fork() #fork反復(fù)拷貝
if pid==0:
print("A",os.getpid(),os.getppid())
else:
print("B",os.getpid(),os.getppid())
# os.getpid()獲取當(dāng)前進(jìn)程id os.getppid()獲取父進(jìn)程id
以上這篇對(duì)python中的os.getpid()和os.fork()函數(shù)詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python3網(wǎng)絡(luò)爬蟲(chóng)中的requests高級(jí)用法詳解
本節(jié)我們?cè)賮?lái)了解下 Requests 的一些高級(jí)用法,如文件上傳,代理設(shè)置,Cookies 設(shè)置等等。感興趣的朋友跟隨小編一起看看吧2019-06-06
python對(duì)驗(yàn)證碼降噪的實(shí)現(xiàn)示例代碼
這篇文章主要介紹了python對(duì)驗(yàn)證碼降噪的實(shí)現(xiàn)示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
python實(shí)現(xiàn)點(diǎn)擊按鈕修改數(shù)據(jù)的方法
今天小編就為大家分享一篇python實(shí)現(xiàn)點(diǎn)擊按鈕修改數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Python與R語(yǔ)言的簡(jiǎn)要對(duì)比
這篇文章主要介紹了Python與R語(yǔ)言的簡(jiǎn)要對(duì)比,小編覺(jué)得還挺不錯(cuò)的,這里分享給大家,需要的朋友可以了解下。2017-11-11
python通過(guò)elixir包操作mysql數(shù)據(jù)庫(kù)實(shí)例代碼
這篇文章主要介紹了python通過(guò)elixir包操作mysql數(shù)據(jù)庫(kù),分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01

