淺談Python中進(jìn)程的創(chuàng)建與結(jié)束
一、進(jìn)程的創(chuàng)建
但凡是硬件,都需要有操作系統(tǒng)去管理,只要有操作系統(tǒng),就有進(jìn)程的概念,就需要有創(chuàng)建進(jìn)程的方式,一些操作系統(tǒng)只為一個(gè)應(yīng)用程序設(shè)計(jì),比如微波爐中的控制器,一旦啟動(dòng)微波爐,所有的進(jìn)程都已經(jīng)存在。
而對(duì)于通用系統(tǒng)(跑很多應(yīng)用程序),需要有系統(tǒng)運(yùn)行過(guò)程中創(chuàng)建或撤銷進(jìn)程的能力,主要分為4中形式創(chuàng)建新的進(jìn)程:
- 系統(tǒng)初始化(查看進(jìn)程linux中用ps命令,windows中用任務(wù)管理器,前臺(tái)進(jìn)程負(fù)責(zé)與用戶交互,后臺(tái)運(yùn)行的進(jìn)程與用戶無(wú)關(guān),運(yùn)行在后臺(tái)并且只在需要時(shí)才喚醒的進(jìn)程,稱為守護(hù)進(jìn)程,如電子郵件、web頁(yè)面、新聞、打?。?/li>
- 一個(gè)進(jìn)程在運(yùn)行過(guò)程中開啟了子進(jìn)程(如nginx開啟多進(jìn)程,os.fork,subprocess.Popen等)
- 用戶的交互式請(qǐng)求,而創(chuàng)建一個(gè)新進(jìn)程(如用戶雙擊暴風(fēng)影音)
- 一個(gè)批處理作業(yè)的初始化(只在大型機(jī)的批處理系統(tǒng)中應(yīng)用
無(wú)論哪一種,新進(jìn)程的創(chuàng)建都是由一個(gè)已經(jīng)存在的進(jìn)程執(zhí)行了一個(gè)用于創(chuàng)建進(jìn)程的系統(tǒng)調(diào)用而創(chuàng)建的。
UNIX和Windows創(chuàng)建進(jìn)程
關(guān)于創(chuàng)建子進(jìn)程,UNIX和Windows:
- 相同的是:進(jìn)程創(chuàng)建后,父進(jìn)程和子進(jìn)程有各自不同的地址空間(多道技術(shù)要求物理層面實(shí)現(xiàn)進(jìn)程之間內(nèi)存的隔離),任何一個(gè)進(jìn)程的在其地址空間中的修改都不會(huì)影響到另外一個(gè)進(jìn)程。
- 不同的是:在UNIX中,子進(jìn)程的初始地址空間是父進(jìn)程的一個(gè)副本,提示:子進(jìn)程和父進(jìn)程是可以有只讀的共享內(nèi)存區(qū)的。但是對(duì)于Windows系統(tǒng)來(lái)說(shuō),從一開始父進(jìn)程與子進(jìn)程的地址空間就是不同的。
二、進(jìn)程的結(jié)束
- 正常退出(自愿,如用戶點(diǎn)擊交互式頁(yè)面的叉號(hào),或程序執(zhí)行完畢調(diào)用發(fā)起系統(tǒng)調(diào)用正常退出,在linux中用exit,在windows中用ExitProcess)
- 出錯(cuò)退出(自愿,python a.py中a.py不存在)
- 嚴(yán)重錯(cuò)誤(非自愿,執(zhí)行非法指令,如引用不存在的內(nèi)存,1/0等,可以捕捉異常,try…except…)
- 被其他進(jìn)程殺死(非自愿,如kill -9)
到此這篇關(guān)于淺談Python中進(jìn)程的創(chuàng)建與結(jié)束的文章就介紹到這了,更多相關(guān)Python進(jìn)程創(chuàng)建與結(jié)束內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python模塊學(xué)習(xí) filecmp 文件比較
filecmp模塊用于比較文件及文件夾的內(nèi)容,它是一個(gè)輕量級(jí)的工具,使用非常簡(jiǎn)單。python標(biāo)準(zhǔn)庫(kù)還提供了difflib模塊用于比較文件的內(nèi)容。關(guān)于difflib模塊,且聽下回分解2012-08-08Django項(xiàng)目搭建之實(shí)現(xiàn)簡(jiǎn)單的API訪問(wèn)
這篇文章主要給大家介紹了關(guān)于Django項(xiàng)目搭建之實(shí)現(xiàn)簡(jiǎn)單的API訪問(wèn)的相關(guān)資料,文中通過(guò)圖文以及示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02anaconda虛擬環(huán)境python?sklearn庫(kù)的安裝過(guò)程
Anaconda是專注于數(shù)據(jù)分析的Python發(fā)行版本,包含了conda、Python等190多個(gè)科學(xué)包及其依賴項(xiàng),這篇文章主要給大家介紹了關(guān)于anaconda虛擬環(huán)境python?sklearn庫(kù)的安裝過(guò)程,需要的朋友可以參考下2023-11-11pandas 對(duì)日期類型數(shù)據(jù)的處理方法詳解
這篇文章主要介紹了pandas 對(duì)日期類型數(shù)據(jù)的處理方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08tensorflow 動(dòng)態(tài)獲取 BatchSzie 的大小實(shí)例
這篇文章主要介紹了tensorflow 動(dòng)態(tài)獲取 BatchSzie 的大小實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06快速部署 Scrapy項(xiàng)目scrapyd的詳細(xì)流程
這篇文章主要介紹了快速部署 Scrapy項(xiàng)目scrapyd的詳細(xì)流程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09