国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 正镶白旗| 老河口市| 含山县| 海淀区| 都江堰市| 九龙坡区| 德昌县| 定陶县| 封丘县| 额济纳旗| 广东省| 平遥县| 咸宁市| 靖州| 板桥市| 阳朔县| 青河县| 玉田县| 盖州市| 峡江县| 民权县| 东乌珠穆沁旗| 若羌县| 阿瓦提县| 贵定县| 阳西县| 元氏县| 宜宾市| 铜陵市| 台中市| 阳春市| 华亭县| 花莲市| 莱西市| 皮山县| 景宁| 西乌| 南丹县| 大港区| 建阳市| 无极县|