python 的os.getpid()和os.fork()函數


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)
print "Process finishingntpid: %d, processName: %s" % (os.getpid(), processName)

 程序每次執行時,操作系統就會創建一個新的進程來運行程序指令。進程還可以調用os.fork,要求操作系統新建一個進程。“父進程”是調用os.fork的進程。父進程所創建的任何進程都是子進程。每個進程都有一個不重復的“進程ID號”,或稱“pid”,它對進程進程進行標識。
進程調用fork函數時,操作系統會新建一個子進程,它本質上與父進程完全相同。子進程從父進程繼承了多個值的拷貝,比如全局變量和環境變量。兩個進程唯一的區別就是fork的返回值。
child(子)進程接收返回值為0,而父進程接收子進程的pid作為返回值。調用fork函數后,兩個進程並發執行同一個程序,首先執行的是調用了fork之后的下一行代碼。父進程和子進程既並發執行,又相互獨立;也就是說,它們是“異步執行”的。

轉自http://www.dajo.com.cn//a/boke/python/2013/1124/135.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM