欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

區(qū)分python中的進(jìn)程與線程

 更新時(shí)間:2020年08月13日 08:35:03   作者:叫我龍總  
這篇文章主要介紹了區(qū)分python中的進(jìn)程與線程,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下

今天整理的文章是給大家梳理Python的進(jìn)程與線程的區(qū)別,沒什么代碼,希望大家能清楚知道他們的區(qū)別,什么情況用線程,什么情況用進(jìn)程做到心中有數(shù),希望大家能熟練掌握.

進(jìn)程的基本概念

概念

進(jìn)程就是一個(gè)程序在一個(gè)數(shù)據(jù)集上的一次動(dòng)態(tài)執(zhí)行過(guò)程。進(jìn)程一般由程序、數(shù)據(jù)集、進(jìn)程控制塊三部分組成。我們編寫的程序用來(lái)描述進(jìn)程要完成哪些功能以及如何完成;數(shù)據(jù)集則是程序在執(zhí)行過(guò)程中所需要使用的資源;進(jìn)程控制塊用來(lái)記錄進(jìn)程的外部特征,描述進(jìn)程的執(zhí)行變化過(guò)程,系統(tǒng)可以利用它來(lái)控制和管理進(jìn)程,它是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志。

線程的基本概念

概念

線程是進(jìn)程中執(zhí)行運(yùn)算的最小單位,是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源,但它可與同屬一個(gè)進(jìn)程的其它線程共享進(jìn)程所擁有的全部資源。一個(gè)線程可以創(chuàng)建和撤消另一個(gè)線程,同一進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行。

好處

  • 易于調(diào)度。
  • 提高并發(fā)性,通過(guò)線程可方便有效地實(shí)現(xiàn)并發(fā)性。進(jìn)程可創(chuàng)建多個(gè)線程來(lái)執(zhí)行同一程序的不同部分。
  • 開銷少,創(chuàng)建線程比創(chuàng)建進(jìn)程要快,所需開銷很少

進(jìn)程的基本狀態(tài)及狀態(tài)之間的關(guān)系

狀態(tài):運(yùn)行、阻塞、掛起阻塞、就緒、掛起就緒

狀態(tài)之間的轉(zhuǎn)換:

  1. 準(zhǔn)備就緒的進(jìn)程,被CPU調(diào)度執(zhí)行,變成運(yùn)行態(tài);
  2. 運(yùn)行中的進(jìn)程,進(jìn)行I/O請(qǐng)求或者不能得到所請(qǐng)求的資源,變成阻塞態(tài);
  3. 運(yùn)行中的進(jìn)程,進(jìn)程執(zhí)行完畢(或時(shí)間片已到),變成就緒態(tài);
  4. 將阻塞態(tài)的進(jìn)程掛起,變成掛起阻塞態(tài),當(dāng)導(dǎo)致進(jìn)程阻塞的I/O操作在用戶重啟進(jìn)程前完成(稱之為喚醒),掛起阻塞態(tài)變成掛起就緒態(tài),當(dāng)用戶在I/O操作結(jié)束之前重啟進(jìn)程,掛起阻塞態(tài)變成阻塞態(tài);
  5. 將就緒(或運(yùn)行)中的進(jìn)程掛起,變成掛起就緒態(tài),當(dāng)該進(jìn)程恢復(fù)之后,掛起就緒態(tài)變成就緒態(tài);

進(jìn)程和線程的關(guān)系:

  • 一個(gè)線程只能屬于一個(gè)進(jìn)程,而一個(gè)進(jìn)程可以有多個(gè)線程,但至少有一個(gè)線程。
  • 資源分配給進(jìn)程,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源。
  • 處理機(jī)分給線程,即真正在處理機(jī)上運(yùn)行的是線程
  • 線程在執(zhí)行過(guò)程中,需要協(xié)作同步。不同進(jìn)程的線程間要利用消息通信的辦法實(shí)現(xiàn)同步。線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體.

進(jìn)程與線程的區(qū)別:

  • 運(yùn)行方式不同

進(jìn)程不能單獨(dú)執(zhí)行,它只是資源的集合。
進(jìn)程要操作CPU,必須要先創(chuàng)建一個(gè)線程。
所有在同一個(gè)進(jìn)程里的線程,是同享同一塊進(jìn)程所占的內(nèi)存空間。

  • 關(guān)系

進(jìn)程中第一個(gè)線程是主線程,主線程可以創(chuàng)建其他線程;其他線程也可以創(chuàng)建線程;線程之間是平等的。
進(jìn)程有父進(jìn)程和子進(jìn)程,獨(dú)立的內(nèi)存空間,唯一的標(biāo)識(shí)符:pid。

  • 速度

啟動(dòng)線程比啟動(dòng)進(jìn)程快
運(yùn)行線程和運(yùn)行進(jìn)程速度上是一樣的,沒有可比性
線程共享內(nèi)存空間,進(jìn)程的內(nèi)存是獨(dú)立的。

  • 創(chuàng)建

父進(jìn)程生成子進(jìn)程,相當(dāng)于復(fù)制一份內(nèi)存空間,進(jìn)程之間不能直接訪問(wèn)
創(chuàng)建新線程很簡(jiǎn)單,創(chuàng)建新進(jìn)程需要對(duì)父進(jìn)程進(jìn)行一次復(fù)制
一個(gè)線程可以控制和操作同級(jí)線程里的其他線程,但是進(jìn)程只能操作子進(jìn)程。

  • 交互

同一個(gè)進(jìn)程里的線程之間可以直接訪問(wèn)。
兩個(gè)進(jìn)程想通信必須通過(guò)一個(gè)中間代理來(lái)實(shí)現(xiàn)。

  • 調(diào)度

線程作為調(diào)度和分配的基本單位,進(jìn)程作為擁有資源的基本單位

  • 并發(fā)性

不僅進(jìn)程之間可以并發(fā)執(zhí)行,同一個(gè)進(jìn)程的多個(gè)線程之間也可并發(fā)執(zhí)行

  • 擁有資源:

進(jìn)程是擁有資源的一個(gè)獨(dú)立單位,線程不擁有系統(tǒng)資源,但可以訪問(wèn)隸屬于進(jìn)程的資源.

  • 系統(tǒng)開銷:

在創(chuàng)建或撤消進(jìn)程時(shí),由于系統(tǒng)都要為之分配和回收資源,導(dǎo)致系統(tǒng)的開銷明顯大于創(chuàng)建或撤消線程時(shí)的開銷。

以上就是區(qū)分python中的進(jìn)程與線程的詳細(xì)內(nèi)容,更多關(guān)于python進(jìn)程與線程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 簡(jiǎn)單了解python的break、continue、pass

    簡(jiǎn)單了解python的break、continue、pass

    這篇文章主要介紹了簡(jiǎn)單了解python的break、continue、pass,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python中判斷類型函數(shù)isinstance()示例詳解

    python中判斷類型函數(shù)isinstance()示例詳解

    isinstance()函數(shù)是Python的內(nèi)置函數(shù),用于判斷一個(gè)變量是否是某個(gè)類型或者是該類型的子類的實(shí)例,在Python中,所有類都繼承自object,所以任何實(shí)例都會(huì)是object的實(shí)例,本文給大家介紹python中判斷類型函數(shù)isinstance(),感興趣的朋友一起看看吧
    2024-10-10
  • Python sorted對(duì)list和dict排序

    Python sorted對(duì)list和dict排序

    這篇文章主要介紹了Python sorted對(duì)list和dict排序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 將Pytorch模型從CPU轉(zhuǎn)換成GPU的實(shí)現(xiàn)方法

    將Pytorch模型從CPU轉(zhuǎn)換成GPU的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇將Pytorch模型從CPU轉(zhuǎn)換成GPU的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • Pytorch DataLoader shuffle驗(yàn)證方式

    Pytorch DataLoader shuffle驗(yàn)證方式

    這篇文章主要介紹了Pytorch DataLoader shuffle驗(yàn)證方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 通過(guò)Python 獲取Android設(shè)備信息的輕量級(jí)框架

    通過(guò)Python 獲取Android設(shè)備信息的輕量級(jí)框架

    今天跟大家分享一下,如何通過(guò)Python實(shí)現(xiàn)一個(gè)輕量級(jí)的庫(kù)來(lái)獲取電腦上連接的Android設(shè)備信息,需要的朋友參考下吧
    2017-12-12
  • Python?pandas中apply函數(shù)簡(jiǎn)介以及用法詳解

    Python?pandas中apply函數(shù)簡(jiǎn)介以及用法詳解

    apply()函數(shù)是pandas里面所有函數(shù)中自由度最高的函數(shù), apply()函數(shù)的參數(shù)是一個(gè)函數(shù)指針,這里可以使用lambda表達(dá)式幫助簡(jiǎn)化代碼,下面這篇文章主要給大家介紹了關(guān)于Python?pandas中apply函數(shù)簡(jiǎn)介以及用法的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • pytorch交叉熵?fù)p失函數(shù)的weight參數(shù)的使用

    pytorch交叉熵?fù)p失函數(shù)的weight參數(shù)的使用

    這篇文章主要介紹了pytorch交叉熵?fù)p失函數(shù)的weight參數(shù)的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Windows下python3.6.4安裝教程

    Windows下python3.6.4安裝教程

    這篇文章主要為大家詳細(xì)介紹了Windows下python3.6.4安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python反射操作對(duì)象屬性方法詳解

    Python反射操作對(duì)象屬性方法詳解

    這篇文章主要介紹了Python反射操作對(duì)象屬性方法詳解,在Python面對(duì)對(duì)象中,通過(guò)字符串的形式去操作對(duì)象的屬性方法就稱之為反射(在Python中一切事物都是可以為對(duì)象),需要的朋友可以參考下
    2023-08-08

最新評(píng)論