国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

簡(jiǎn)單分析Python中用fork()函數(shù)生成的子進(jìn)程

2020-02-23 01:03:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

python的os module中有fork()函數(shù)用于生成子進(jìn)程,生成的子進(jìn)程是父進(jìn)程的鏡像,但是它們有各自的地址空間,子進(jìn)程復(fù)制一份父進(jìn)程內(nèi)存給自己,兩個(gè)進(jìn)程之 間的執(zhí)行是相互獨(dú)立的,其執(zhí)行順序可以是不確定的、隨機(jī)的、不可預(yù)測(cè)的,這點(diǎn)與多線程的執(zhí)行順序相似。 

import osdef 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':      breakparent()

    在我們加載了os模塊之后,我們parent函數(shù)中fork()函數(shù)生成了一個(gè)子進(jìn)程,返回值newpid有兩個(gè),一個(gè)為0,用以表示子進(jìn)程,一個(gè)是大于 0的整數(shù),用以表示父進(jìn)程,這個(gè)常數(shù)正是子進(jìn)程的pid. 通過(guò)print語(yǔ)句我們可以清晰看到兩個(gè)返回值。如果fork()返回值是一個(gè)負(fù)值,則表明子進(jìn)程生成不成功(這個(gè)簡(jiǎn)單程序中沒(méi)有考慮這種情況)。如果 newpid==0,則表明我們進(jìn)入到了子進(jìn)程,也就是child()函數(shù)中,在子進(jìn)程中我們輸出了自己的id和父進(jìn)程的id。如果進(jìn)入了else語(yǔ)句, 則表明newpid>0,我們進(jìn)入到父進(jìn)程中,在父進(jìn)程中os.getpid()得到自己的id,fork()返回值newpid表示了子進(jìn)程的id,同時(shí)我們輸出了父進(jìn)程的父進(jìn)程的id. 通過(guò)實(shí)驗(yàn)我們可以看到if和else語(yǔ)句的執(zhí)行順序是不確定的,子、父進(jìn)程的執(zhí)行順序由操作系統(tǒng)的調(diào)度算法來(lái)決定。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 聂拉木县| 清水县| 阿拉善左旗| 淮滨县| 双江| 犍为县| 松潘县| 资源县| 台南市| 巢湖市| 鞍山市| 文化| 龙陵县| 南华县| 中山市| 渭南市| 买车| 金山区| 铁力市| 临朐县| 谷城县| 仪陇县| 临湘市| 务川| 陵川县| 商城县| 乐清市| 永春县| 仙居县| 桂林市| 白朗县| 宜君县| 武义县| 台北县| 临朐县| 连平县| 南郑县| 南郑县| 亚东县| 伊川县| 巨野县|