0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python中進(jìn)程的操作

冬至配餃子 ? 來源:多蘭多 ? 作者:Toranto ? 2022-08-19 09:45 ? 次閱讀

進(jìn)程、線程、協(xié)程

一、什么是進(jìn)程

進(jìn)程是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。

在早期面向進(jìn)程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是程序的基本執(zhí)行實(shí)體;在當(dāng)代面向進(jìn)程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是線程的容器。

程序是指令、數(shù)據(jù)及其組織形式的描述,進(jìn)程是程序的實(shí)體。

狹義定義:進(jìn)程是正在運(yùn)行的程序的實(shí)例。

廣義定義∶進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。它是操作系統(tǒng)動(dòng)態(tài)執(zhí)行的基本單元,在傳統(tǒng)的操作系統(tǒng)中,進(jìn)程既是基本的分配單元,也是基本的執(zhí)行單元。

注意:同一個(gè)程序執(zhí)行兩次,就會(huì)在操作系統(tǒng)中出現(xiàn)兩個(gè)進(jìn)程,所以我們可以同時(shí)運(yùn)行一個(gè)軟件,分別做不同的事情也不會(huì)混亂。

每個(gè)進(jìn)程都有自己獨(dú)立的一塊內(nèi)存空間,一個(gè)進(jìn)程可以有多個(gè)線程,比如在Windows系統(tǒng)中,一個(gè)運(yùn)行的xx.exe就是一個(gè)進(jìn)程。

pYYBAGL-6XyAGGD1AAFdmUgrRBg903.png

二、什么是線程

進(jìn)程中的一個(gè)執(zhí)行任務(wù)(控制單元),負(fù)責(zé)當(dāng)前進(jìn)程中程序的執(zhí)行。一個(gè)進(jìn)程至少有一個(gè)線程,一個(gè)進(jìn)程可以運(yùn)行多個(gè)線程,多個(gè)線程可共享數(shù)據(jù)。

與進(jìn)程不同的是同類的多個(gè)線程共享進(jìn)程的方法區(qū)資源,但每個(gè)線程有自己的程序計(jì)數(shù)器、虛擬機(jī)棧本地方法棧,所以系統(tǒng)在產(chǎn)生一個(gè)線程,或是在各個(gè)線程之間作切換工作時(shí),負(fù)擔(dān)要比進(jìn)程小得多,也正因?yàn)槿绱?,線程也被稱為輕量級(jí)進(jìn)程。

pYYBAGL-6aWAfUFqAAE7SCVP410887.png

三、進(jìn)程和線程的區(qū)別

根本區(qū)別進(jìn)程是操作系統(tǒng)資源分配的基本單位,而線程是處理器任務(wù)調(diào)度和執(zhí)行的基本單位;

內(nèi)存分配

同一進(jìn)程的線程共享本進(jìn)程的地址空間和資源,而進(jìn)程之間的地址空間和資源是相互獨(dú)立的;

影響關(guān)系

一個(gè)進(jìn)程崩潰后,在保護(hù)模式下不會(huì)對(duì)其他進(jìn)程產(chǎn)生影響,但是一個(gè)線程崩潰整個(gè)進(jìn)程都死掉。所以多進(jìn)程要比多線程健壯。

四、協(xié)程

協(xié)程(Coroutines)是一種比線程更加輕量級(jí)的存在。協(xié)程完全由程序所控制(在用戶態(tài)執(zhí)行),帶來的好處是性能大幅度的提升。

一個(gè)操作系統(tǒng)中可以有多個(gè)進(jìn)程;一個(gè)進(jìn)程可以有多個(gè)線程;同理,一個(gè)線程可以有多個(gè)協(xié)程。

協(xié)程是一個(gè)特殊的函數(shù),這個(gè)函數(shù)可以在某個(gè)地方掛起,并且可以重新在掛起處繼續(xù)運(yùn)行。一個(gè)線程內(nèi)的多個(gè)協(xié)程的運(yùn)行是串行的,這點(diǎn)和多進(jìn)程(多線程)在多核CPU上執(zhí)行時(shí)是不同的。多進(jìn)程(多線程)在多核CPU上是可以并行的。當(dāng)線程內(nèi)的某一個(gè)協(xié)程運(yùn)行時(shí),其它協(xié)程必須掛起。

進(jìn)程微觀

一、進(jìn)程調(diào)度

要想多個(gè)進(jìn)程交替運(yùn)行,操作系統(tǒng)必須對(duì)這些進(jìn)程進(jìn)行調(diào)度,這個(gè)調(diào)度也不是隨機(jī)進(jìn)行的,而是需要遵循一定的法則,由此就有了進(jìn)程的調(diào)度算法

先來先服務(wù)調(diào)度算法(先來后到)

短作業(yè)優(yōu)先調(diào)度算法(進(jìn)程的復(fù)雜程度不同)

時(shí)間片輪轉(zhuǎn)法(分配時(shí)間片)

多級(jí)反饋隊(duì)列(分級(jí))

二、進(jìn)程的并行和并發(fā)

poYBAGL-6cKASMXHAAFPfJdJR3c069.png

a.并行:并行是指兩者同時(shí)執(zhí)行,比如賽跑,兩個(gè)人都在不停的往前跑;i、(資源夠用,比如三個(gè)進(jìn)程,四核的cpu)

b.并發(fā):并發(fā)是指資源有限的情況下,兩者交替輪流使用資源,比如一座橋(單核cpu)同時(shí)只能過一個(gè)人,A走一段后,讓給B,B用完繼續(xù)給A,交替使用,目的是提高效率。

c.區(qū)別:i.并行是從微觀上,也就是在一個(gè)精確的時(shí)間片刻,有不同的程序在執(zhí)行,這就要求必須有多個(gè)處理器。ii.并發(fā)是從宏觀上,在一個(gè)時(shí)間段上可以看出是同時(shí)執(zhí)行的,比如一個(gè)服務(wù)器同時(shí)處理多個(gè)請(qǐng)求。

三、進(jìn)程的狀態(tài)

時(shí)間片即CPU分配給各個(gè)程序的時(shí)間,每個(gè)線程被分配一個(gè)時(shí)間段,稱作它的時(shí)間片,即該進(jìn)程允許運(yùn)行的時(shí)間,使各個(gè)程序從表面上看是同時(shí)進(jìn)行的。

運(yùn)行程序會(huì)創(chuàng)建進(jìn)程,然后將進(jìn)程提交到操作系統(tǒng),操作系統(tǒng)進(jìn)行進(jìn)程調(diào)度,此時(shí)就會(huì)進(jìn)入就緒、運(yùn)行狀態(tài)(時(shí)間片輪轉(zhuǎn)會(huì)導(dǎo)致兩種狀態(tài)相互切換),如果在運(yùn)行中遇到阻塞事件就會(huì)停滯進(jìn)入阻塞狀態(tài)(不管是不是阻塞IO,一個(gè)線程等待io操作時(shí)都會(huì)被操作系統(tǒng)掛起,不消耗CPU。),直到等到信號(hào)的傳遞。

pYYBAGL-6dqAMN4oAABBQ1zLZP0800.png

就緒狀態(tài):當(dāng)進(jìn)程已分配到除CPU以外的所有必要的資源,只要獲得處理機(jī)可立即執(zhí)行,這時(shí)的進(jìn)程狀態(tài)稱為就緒狀態(tài)。執(zhí)行、運(yùn)行:當(dāng)程序已獲得處理機(jī),其程序正在處理機(jī)上執(zhí)行,此時(shí)的進(jìn)程狀態(tài)稱為執(zhí)行狀態(tài)。

阻塞:由于等待某個(gè)事件發(fā)生而無法執(zhí)行時(shí),便放棄處理機(jī)而處于阻塞狀態(tài)。引進(jìn)進(jìn)程阻塞的事件可有多種,例如,等待I/O完成(IO是輸入input輸出output的首字母縮寫形式)、申請(qǐng)緩沖區(qū)不能滿足、等待信號(hào)等。

同步、異步

同步:

就是一個(gè)任務(wù)的完成需要依賴另一個(gè)任務(wù)時(shí),只有等待被依賴的任務(wù)完成后,依賴的任務(wù)才能完成,這是一種可靠的任務(wù)序列。要么成功都成功,失敗都失敗,兩個(gè)任務(wù)的狀態(tài)可以保持一致。

#同步  兩件事  一件做完再做另外一件

異步:

是不需要等待被依賴的任務(wù)完成,只是通知被依賴的任務(wù)要完成什么工作,依賴的任務(wù)也立即執(zhí)行,只要自己完成了整個(gè)任務(wù)就算完成了,至于被依賴的任務(wù)最終是否完成,依賴它的任務(wù)無法確定,所以它是不可靠的任務(wù)序列。

# 異步  兩件事  同時(shí)做



進(jìn)程的創(chuàng)建

但凡是硬件,都需要有操作系統(tǒng)去管理,只要有操作系統(tǒng),就有進(jìn)程的概念,就需要有創(chuàng)建進(jìn)程的方式。

對(duì)于通用操作系統(tǒng)(跑很多應(yīng)用程序),需要有系統(tǒng)運(yùn)行過程中創(chuàng)建或撤銷進(jìn)程的能力,主要分成4種形式創(chuàng)建新的進(jìn)程:

系統(tǒng)初始化(運(yùn)行在后臺(tái)并且只在需要時(shí)才喚醒的進(jìn)程)

一個(gè)進(jìn)程在運(yùn)行過程中開啟了子進(jìn)程(如nginx開啟多進(jìn)程)

用戶的交互請(qǐng)求,而創(chuàng)建一個(gè)進(jìn)程(如雙擊大家都熟悉的快播)

一個(gè)批處理作業(yè)的初始化(只在大型機(jī)的批處理系統(tǒng)中應(yīng)用)

無論哪一種,

新進(jìn)程的創(chuàng)建都是由一個(gè)已近存在的進(jìn)程執(zhí)行了一個(gè)用于創(chuàng)建進(jìn)程的系統(tǒng)調(diào)用而創(chuàng)建的。

進(jìn)程的結(jié)束:正常退出、出錯(cuò)退出、嚴(yán)重錯(cuò)誤、被其他進(jìn)程殺死。

Python中進(jìn)程的操作

之前我們已經(jīng)了解了很多進(jìn)程相關(guān)的理論知識(shí),了解進(jìn)程是什么應(yīng)該不再困難了,剛剛我們已經(jīng)了解了,運(yùn)行中的程序就是進(jìn)程。所有的進(jìn)程都是通過它的父進(jìn)程來創(chuàng)建的。因此,運(yùn)行起來的Python程序也是一個(gè)進(jìn)程,那么我們也可以在程序中再創(chuàng)建進(jìn)程。多個(gè)進(jìn)程可以實(shí)現(xiàn)并發(fā)效果,也就是說,當(dāng)我們的程序中存在多個(gè)進(jìn)程的時(shí)候,在某些時(shí)候,就會(huì)讓程序的執(zhí)行速度變快。以我們之前所學(xué)的知識(shí),并不能實(shí)現(xiàn)創(chuàng)建進(jìn)程這個(gè)功能,所以我們就需要借助Python程序中強(qiáng)到大的模塊——multiprocessing。

仔細(xì)來說,multiprocessing不是一個(gè)模塊而是Python中一個(gè)操作、管理進(jìn)程的包。之所以叫multi是取自multiple的多功能的意思,在這個(gè)包中幾乎包含了和進(jìn)程有關(guān)的所有子模塊。由于提供的子模塊非常多,為了方便大家歸類記憶我們分成四個(gè)部分:創(chuàng)建進(jìn)程部分、進(jìn)程同步部分、進(jìn)程池部分、進(jìn)程之間數(shù)據(jù)共享。

一、multiprocessing.Process模塊

Process模塊是一個(gè)創(chuàng)建進(jìn)程的模塊,語法格式為:

Process(target=運(yùn)行的函數(shù)的內(nèi)存地址,name=自定義進(jìn)程名稱可不寫,args=(參數(shù)))
poYBAGL-6geAAEhHAAB-6Rda_r8942.png

思考:Pycharm、py文件所在的進(jìn)程、子進(jìn)程p是同步還是異步?

py文件的運(yùn)行必須要建立在pycharm的基礎(chǔ)上嗎?

很明顯不用,pycharm只是一個(gè)編譯器,只是一個(gè)更方便我們編程的工具而已,所以肯定是異步的。

問題很多的小明就要問了:那你子進(jìn)程p要建立在py文件的基礎(chǔ)上啊。

那我們檢驗(yàn)一下:

pYYBAGL-6iyADKziAAC42MnDUsw220.png

pYYBAGL-6jGABCsPAACFeQpWsjw045.png

從運(yùn)行結(jié)果來看,子進(jìn)程和父進(jìn)程是同時(shí)執(zhí)行的,所以它們其實(shí)也是異步的。

二、Why __name__ =='__main__' ?

為什么要寫if __name_=='__main__': ?

只要是在windows系統(tǒng)上,并且創(chuàng)建子進(jìn)程,那么就必須寫。

原因是不同操作系統(tǒng)之間創(chuàng)建子進(jìn)程的方式不一樣,具體表現(xiàn)為:

Python多進(jìn)程中,對(duì)于子進(jìn)程的運(yùn)行機(jī)制是:每個(gè)子進(jìn)程中,由于不同的進(jìn)程之間有獨(dú)立內(nèi)存,不會(huì)共享,所以每個(gè)子進(jìn)程是通過分別導(dǎo)入所在的腳本模塊來實(shí)現(xiàn)目標(biāo)函數(shù)的運(yùn)行的。對(duì)于這個(gè)機(jī)制,有以下兩點(diǎn)需要特別注意。

由于每個(gè)子進(jìn)程是通過導(dǎo)入所在腳本的模塊實(shí)現(xiàn)模塊中函數(shù)的調(diào)用的,所以,為了避免將創(chuàng)建子進(jìn)程的語句也被導(dǎo)入(因?yàn)檫@樣就會(huì)造成無限循環(huán)創(chuàng)建子進(jìn)程,這顯然是不允許的,因此python禁止了在子進(jìn)程中再創(chuàng)建子進(jìn)程,否則會(huì)報(bào)錯(cuò)),創(chuàng)建子進(jìn)程的語句必須在if __name__=='__main__'語句之后定義,或者如果創(chuàng)建子進(jìn)程的語句是定義在一個(gè)函數(shù)中的,那么這個(gè)函數(shù)調(diào)用必須在if __name__=='__main__'語句之后,這是python多進(jìn)程中的強(qiáng)制性語法規(guī)則。

由于子進(jìn)程可直接調(diào)用的是被導(dǎo)入模塊中的屬性,因此,子進(jìn)程中的目標(biāo)函數(shù)應(yīng)該是被導(dǎo)入的,這樣子進(jìn)程才可以調(diào)用到期需要的目標(biāo)函數(shù),因此,目標(biāo)函數(shù)必須在if __name__=='__main__'語句之前定義,如果是在該語句之后定義,那么由于被導(dǎo)入時(shí)這部分是不會(huì)被導(dǎo)入的,所以運(yùn)行時(shí)就會(huì)報(bào)"被導(dǎo)入的主模塊沒有目標(biāo)函數(shù)屬性"這樣的錯(cuò)誤

三、能否給子進(jìn)程傳參?

試一試不就知道了:

pYYBAGL-6leAAjqWAADH1y4wzFI766.png

四、進(jìn)程間的數(shù)據(jù)隔離(數(shù)據(jù)不共享)

poYBAGL-6mqAUnAJAAB5nHkJ164114.png

按照我們的理解,num在經(jīng)過global的聲明之后,在全局中其表現(xiàn)形式應(yīng)該發(fā)生了改變,但是我們看結(jié)果:

pYYBAGL-6n6AA7r0AABogUVo224471.png


子進(jìn)程與父進(jìn)程的變量的num仍然沒有發(fā)生改變,說明進(jìn)程間數(shù)據(jù)是不共享的,有各自的內(nèi)存池。

五、如何開啟多進(jìn)程

就...正常...開啟...

pYYBAGL-6pyAMzJNAACVNkd6MIc939.pngpYYBAGL-5_CAFcRvAABXEcoRNqU369.png

六、子進(jìn)程和父進(jìn)程的關(guān)系

pYYBAGL-6r-Ab30BAABzffrTxoA478.png

poYBAGL-6sWAMNKXAACaFYr_TkM416.png

父進(jìn)程和子進(jìn)程的啟動(dòng)是異步的;

父進(jìn)程只負(fù)責(zé)通知操作系統(tǒng)啟動(dòng)子進(jìn)程;

接下來的工作由操作系統(tǒng)接手,父進(jìn)程繼續(xù)執(zhí)行;

父進(jìn)程的代碼執(zhí)行完畢之后并不會(huì)直接結(jié)束程序,需要等全部子進(jìn)程執(zhí)行完畢;

父進(jìn)程要負(fù)責(zé)回收子進(jìn)程的資源。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1617

    瀏覽量

    49015
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    201

    瀏覽量

    13938
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    操作系統(tǒng)中進(jìn)程調(diào)度策略有哪幾種

    操作系統(tǒng)中進(jìn)程調(diào)度策略有哪幾種? 求大神指點(diǎn)啊
    發(fā)表于 11-07 21:18

    Linux系統(tǒng)中進(jìn)程如何查看及控制

    Linux系統(tǒng)中進(jìn)程的查看及控制
    發(fā)表于 06-09 08:34

    uClinux進(jìn)程調(diào)度器的實(shí)現(xiàn)分析

    分享到:標(biāo)簽:uClinux 調(diào)度策略 進(jìn)程調(diào)度器 摘要:針對(duì)操作系統(tǒng)中進(jìn)程的調(diào)度機(jī)制,依次對(duì)其調(diào)度方式、調(diào)度策略、調(diào)度時(shí)機(jī)進(jìn)行了分析,并結(jié)合uClinux中進(jìn)程調(diào)度實(shí)現(xiàn)的核心源代碼,
    發(fā)表于 11-06 14:30 ?0次下載

    Linux和UNIX可以用什么命令查看運(yùn)行中進(jìn)程的相關(guān)信息

      你可以使用ps命令。它能顯示當(dāng)前運(yùn)行中進(jìn)程的相關(guān)信息,包括進(jìn)程的PID。Linux和UNIX都支持ps命令,顯示所有運(yùn)行中進(jìn)程的相關(guān)信息。ps命令能提供一份當(dāng)前進(jìn)程的快照。如果你想
    發(fā)表于 01-20 09:42 ?6445次閱讀

    嵌入式Linux中進(jìn)程調(diào)度怎樣來解析

    處理機(jī)(CPU)是整個(gè)計(jì)算機(jī)系統(tǒng)的核心資源,在多進(jìn)程操作系統(tǒng)中,進(jìn)程數(shù)往往多于處理機(jī)數(shù),這將導(dǎo)致各進(jìn)程互相爭(zhēng)奪處理機(jī)。
    發(fā)表于 11-06 11:54 ?700次閱讀

    使用Python進(jìn)程的理由

    Python 是運(yùn)行在解釋器中的語言,查找資料知道, python 中有一個(gè)全局鎖( GI),在使用多進(jìn)程( Threa)的情況下,不能發(fā)揮多核的優(yōu)勢(shì)。而使用多進(jìn)程( Multipro
    的頭像 發(fā)表于 04-04 16:50 ?1567次閱讀
    使用<b class='flag-5'>Python</b>多<b class='flag-5'>進(jìn)程</b>的理由

    程序中進(jìn)程和線程常見的19個(gè)問題

    計(jì)數(shù)器、寄存器和程序變量的當(dāng)前值。 簡(jiǎn)單來說進(jìn)程就是一個(gè)程序的執(zhí)行流程,內(nèi)部保存程序運(yùn)行所需的資源。 在操作系統(tǒng)中可以有多個(gè)進(jìn)程在運(yùn)行,可對(duì)于CPU來說,同一時(shí)刻,一個(gè)CPU只能運(yùn)行一個(gè)進(jìn)程
    的頭像 發(fā)表于 12-26 10:17 ?1911次閱讀
    程序<b class='flag-5'>中進(jìn)程</b>和線程常見的19個(gè)問題

    Python對(duì)txt進(jìn)行讀寫操作

    Python對(duì)txt進(jìn)行讀寫操作
    的頭像 發(fā)表于 01-11 15:16 ?787次閱讀

    python列表序列操作教程

    python列表也是序列對(duì)象,可以進(jìn)行序列通用的操作,類似字符串序列的操作。
    的頭像 發(fā)表于 02-23 15:04 ?610次閱讀

    Python進(jìn)程學(xué)習(xí)

    Python進(jìn)程 (Multiprocessing) 是一種同時(shí)利用計(jì)算機(jī)多個(gè)處理器核心 (CPU cores) 進(jìn)行并行處理的技術(shù),它與 Python 的多線程 (Multithreading
    的頭像 發(fā)表于 04-26 11:04 ?518次閱讀

    程序中進(jìn)程和線程的區(qū)別

    什么是進(jìn)程 1、進(jìn)程和線程的區(qū)別 進(jìn)程是指正在運(yùn)行的程序,它擁有獨(dú)立的內(nèi)存空間和系統(tǒng)資源,不同進(jìn)程之間的數(shù)據(jù)不共享。進(jìn)程是資源分配的基本單位
    的頭像 發(fā)表于 06-22 11:39 ?629次閱讀
    程序<b class='flag-5'>中進(jìn)程</b>和線程的區(qū)別

    操作系統(tǒng)中進(jìn)程同步介紹

    進(jìn)程同步 動(dòng)畫展示,臨界區(qū)的資源,在某個(gè)時(shí)刻,只能有一個(gè)進(jìn)程在使用。 臨界資源 一旦有對(duì)資源的共享,就必然涉及競(jìng)爭(zhēng)限制。 臨界資源用來表示一種,公共資源或者說是共享數(shù)據(jù),可以被多個(gè)線程使用。 但是
    的頭像 發(fā)表于 10-08 15:42 ?1042次閱讀
    <b class='flag-5'>操作</b>系統(tǒng)<b class='flag-5'>中進(jìn)程</b>同步介紹

    網(wǎng)絡(luò)中進(jìn)程之間如何通信

    我們深諳信息交流的價(jià)值,那網(wǎng)絡(luò)中進(jìn)程之間如何通信,如我們每天打開瀏覽器瀏覽網(wǎng)頁時(shí),瀏覽器的進(jìn)程怎么與web服務(wù)器通信的?當(dāng)你用QQ聊天時(shí),QQ進(jìn)程怎么與服務(wù)器或你好友所在的QQ進(jìn)程通信
    的頭像 發(fā)表于 11-13 10:48 ?378次閱讀
    網(wǎng)絡(luò)<b class='flag-5'>中進(jìn)程</b>之間如何通信

    Linux中進(jìn)程、線程和協(xié)程的基礎(chǔ)概念

    進(jìn)程是計(jì)算機(jī)中運(yùn)行的程序的實(shí)例,它是操作系統(tǒng)中最基本的執(zhí)行單元之一。每個(gè)進(jìn)程都有自己的獨(dú)立內(nèi)存空間、系統(tǒng)資源和代碼執(zhí)行流。這意味著一個(gè)進(jìn)程的崩潰通常不會(huì)影響其他
    的頭像 發(fā)表于 12-06 09:22 ?748次閱讀

    Python中多線程和多進(jìn)程的區(qū)別

    Python作為一種高級(jí)編程語言,提供了多種并發(fā)編程的方式,其中多線程與多進(jìn)程是最常見的兩種方式之一。在本文中,我們將探討Python中多線程與多進(jìn)程的概念、區(qū)別以及如何使用線程池與
    的頭像 發(fā)表于 10-23 11:48 ?231次閱讀
    <b class='flag-5'>Python</b>中多線程和多<b class='flag-5'>進(jìn)程</b>的區(qū)別