最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于對python中進(jìn)程的幾個(gè)概念理解

 更新時(shí)間:2021年10月11日 10:02:48   作者:工具晨的日常  
進(jìn)程由程序,數(shù)據(jù)和進(jìn)程控制塊組成,是正在執(zhí)行的程,程序的一次執(zhí)行過程,是資源調(diào)度的基本單位,下面這篇文章主要給大家介紹了關(guān)于對python中進(jìn)程的幾個(gè)概念理解,需要的朋友可以參考下

進(jìn)程

第一,進(jìn)程是一個(gè)容器。每一個(gè)進(jìn)程都有它自己的地址空間,一般情況下,包括文本區(qū)域( text region)、數(shù)據(jù)區(qū)域(data region)和堆棧(stack region)。
文本區(qū)域存儲處理器執(zhí)行的代碼;數(shù)據(jù)區(qū)城存儲變量和進(jìn)程執(zhí)行期間使用的動態(tài)分配的內(nèi)存;堆棧區(qū)域存儲看活動過程調(diào)用的指令和本地變量。

第二,進(jìn)程是一個(gè)"執(zhí)行中的程序"。程序是一個(gè)沒有生命的實(shí)體,只有處理器賦予程序生命時(shí)(操作系統(tǒng)執(zhí)行之),它才 能成為一個(gè)活動的實(shí)體,我們稱其為進(jìn)程。

第三,進(jìn)程是操作系統(tǒng)中最基本、重要的概念。是多道程序系統(tǒng)岀現(xiàn)后,為了刻圓系統(tǒng)內(nèi)部出現(xiàn)的 動態(tài)情況,箍述系統(tǒng)內(nèi)部眢道程序的活動規(guī)律引進(jìn)的一個(gè)概念,所有多道程序設(shè)計(jì)搡作系統(tǒng)都建立在進(jìn)程的基礎(chǔ)上。

本文為了說明例子,用中文作為變量寫在了程序里面,一般編程最好不要那么寫

僵尸進(jìn)程

僵尸進(jìn)程是當(dāng)子進(jìn)程比父進(jìn)程先結(jié)束,而父進(jìn)程又沒有回收子進(jìn)程,釋放子進(jìn)程占用的資源,此時(shí)子進(jìn)程將成為一個(gè)僵尸進(jìn)程。如果父進(jìn)程先退出 ,子進(jìn)程被init接管,子進(jìn)程退出后init會回收其占用的相關(guān)資源

我們都知道進(jìn)程的工作原理。我們啟動一個(gè)程序,開始我們的任務(wù),然后等任務(wù)結(jié)束了,我們就停止這個(gè)進(jìn)程。 進(jìn)程停止后, 該進(jìn)程就會從進(jìn)程表中移除。

你可以通過 System-Monitor 查看當(dāng)前進(jìn)程。

In UNIX System terminology, a process that has terminated,but whose parent has not yet waited for it, is called a zombie. 在UNIX 系統(tǒng)中,一個(gè)進(jìn)程結(jié)束了,但是他的父進(jìn)程沒有等待(調(diào)用wait / waitpid)他, 那么他將變成一個(gè)僵尸進(jìn)程。 但是如果該進(jìn)程的父進(jìn)程已經(jīng)先結(jié)束了,那么該進(jìn)程就不會變成僵尸進(jìn)程, 因?yàn)槊總€(gè)進(jìn)程結(jié)束的時(shí)候,系統(tǒng)都會掃描當(dāng)前系統(tǒng)中所運(yùn)行的所有進(jìn)程, 看有沒有哪個(gè)進(jìn)程是剛剛結(jié)束的這個(gè)進(jìn)程的子進(jìn)程,如果是的話,就由Init 來接管他,成為他的父進(jìn)程

孤兒進(jìn)程

在操作系統(tǒng)領(lǐng)域中,孤兒進(jìn)程指的是在其父進(jìn)程執(zhí)行完成或被終止后仍繼續(xù)運(yùn)行的一類進(jìn)程。這些孤兒進(jìn)程將被init進(jìn)程(進(jìn)程號為1)所收養(yǎng),并由init進(jìn)程對它們完成狀態(tài)收集工作。

代碼示例

from multiprocessing import Process
import time


def 要運(yùn)行的函數(shù)():
    print('我是子進(jìn)程A')
    time.sleep(5)
    print('我是子進(jìn)程B')


if __name__ == '__main__':
    p = Process(target=要運(yùn)行的函數(shù))
    p.start()
    print('我是主進(jìn)程')

效果

守護(hù)進(jìn)程

守護(hù)進(jìn)程是一個(gè)在后臺運(yùn)行并且不受任何終端控制的進(jìn)程。Unix操作系統(tǒng)有很多典型的守護(hù)進(jìn)程(其數(shù)目根據(jù)需要或20—50不等),它們在后臺運(yùn)行,執(zhí)行不同的管理任務(wù)。

用戶使守護(hù)進(jìn)程獨(dú)立于所有終端是因?yàn)?,在守護(hù)進(jìn)程從一個(gè)終端啟動的情況下,這同一個(gè)終端可能被其他的用戶使用。例如,用戶從一個(gè)終端啟動守護(hù)進(jìn)程后退出,然后另外一個(gè)人也登錄到這個(gè)終端。用戶不希望后者在使用該終端的過程中,接收到守護(hù)進(jìn)程的任何錯(cuò)誤信息。同樣,由終端鍵入的任何信號(例如中斷信號)也不應(yīng)該影響先前在該終端啟動的任何守護(hù)進(jìn)程的運(yùn)行。雖然讓服務(wù)器后臺運(yùn)行很容易(只要shell命令行以&結(jié)尾即可),但用戶還應(yīng)該做些工作,讓程序本身能夠自動進(jìn)入后臺,且不依賴于任何終端。

守護(hù)進(jìn)程沒有控制終端,因此當(dāng)某些情況發(fā)生時(shí),不管是一般的報(bào)告性信息,還是需由管理員處理的緊急信息,都需要以某種方式輸出。Syslog 函數(shù)就是輸出這些信息的標(biāo)準(zhǔn)方法,它把信息發(fā)送給 syslogd 守護(hù)進(jìn)程。

代碼實(shí)現(xiàn)

from multiprocessing import Process
import time


def 要運(yùn)行的函數(shù)(變量):
    print('%s負(fù)責(zé)剝削的資本家正在運(yùn)行'% 變量)
    time.sleep(3)
    print('%s負(fù)責(zé)剝削的資本家正在終止' % 變量)


if __name__ == '__main__':
    A = Process(target=要運(yùn)行的函數(shù),args=('資本家',))

    A.daemon = True  # 將進(jìn)程A設(shè)置成守護(hù)進(jìn)程  本行代碼要放在start方法上面才有效,否則會報(bào)錯(cuò)
    A.start()
    print('剝削的資本家被終止了')

效果

互斥鎖

在編程中,引入了對象互斥鎖的概念,來保證共享數(shù)據(jù)操作的完整性。每個(gè)對象都對應(yīng)于一個(gè)可稱為" 互斥鎖" 的標(biāo)記,這個(gè)標(biāo)記用來保證在任一時(shí)刻,只能有一個(gè)線程訪問該對象。

比如,一群人中,出現(xiàn)了一個(gè)工賊,但是,人們覺得用拳頭不爽,但是狼牙棒只有一個(gè),于是大家要開始搶狼牙棒,我們就對狼牙棒上一個(gè)互斥鎖

代碼實(shí)現(xiàn)

from multiprocessing import Process, Lock
import json
import time
import random


# 查狼牙棒
def search(i):
    # 文件操作讀取狼牙棒數(shù)
    with open('data','r',encoding='utf8') as f:
        dic = json.load(f)
    print('群眾%s想要獲取余狼牙棒:%s'%(i, dic.get('狼牙棒_num')))
    # 字典取值不能用[]的形式 應(yīng)該使用get,即使函數(shù)不能運(yùn)行也要寫個(gè)pass上去,這是為了避免因?yàn)樾栴}導(dǎo)致整個(gè)程序無法運(yùn)行的情況


# 搶狼牙棒  1.先查 2.再搶
def buy(i):
    # 先查狼牙棒
    with open('data.txt','r',encoding='utf8') as f:
        dic = json.load(f)
    # 模擬網(wǎng)絡(luò)延遲
    time.sleep(random.randint(1,5))#每個(gè)人的手速不同
    # 判斷當(dāng)前是否有狼牙棒
    if dic.get('狼牙棒_num') > 0:
        # 修改數(shù)據(jù)庫 搶狼牙棒
        dic['狼牙棒_num'] -= 1
        # 寫入數(shù)據(jù)庫
        with open('data.txt','w',encoding='utf8') as f:
            json.dump(dic,f)
        print('群眾%s搶狼牙棒成功'%i)
    else:
        print('群眾%s搶狼牙棒失敗'%i)


# 整合上面兩個(gè)函數(shù)
def run(i, mutex):
    search(i)
    # 給狼牙棒環(huán)節(jié)加鎖處理
    # 搶鎖
    mutex.acquire()

    buy(i)
    # 釋放鎖
    mutex.release()


if __name__ == '__main__':
    # 在主進(jìn)程中生成一把鎖 讓所有的子進(jìn)程搶
    mutex = Lock()
    for i in range(1,11):
        p = Process(target=run, args=(i, mutex))
        p.start()



效果

文件格式

總結(jié)

到此這篇關(guān)于對python中進(jìn)程的幾個(gè)概念理解的文章就介紹到這了,更多相關(guān)python進(jìn)程概念理解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python?Gooey庫將命令行程序轉(zhuǎn)換成圖形用戶界面GUI應(yīng)用

    python?Gooey庫將命令行程序轉(zhuǎn)換成圖形用戶界面GUI應(yīng)用

    這篇文章主要為大家介紹了python?Gooey庫將命令行程序轉(zhuǎn)換成圖形用戶界面GUI應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Python使用TextRank算法實(shí)現(xiàn)文獻(xiàn)關(guān)鍵信息提取

    Python使用TextRank算法實(shí)現(xiàn)文獻(xiàn)關(guān)鍵信息提取

    ?TextRank算法是一種基于圖的排序算法,主要用于文本處理中的關(guān)鍵詞提取和文本摘要,下面我們就來看看如何使用?TextRank算法實(shí)現(xiàn)文獻(xiàn)關(guān)鍵信息提取吧
    2025-03-03
  • pandas數(shù)據(jù)預(yù)處理之dataframe的groupby操作方法

    pandas數(shù)據(jù)預(yù)處理之dataframe的groupby操作方法

    下面小編就為大家分享一篇pandas數(shù)據(jù)預(yù)處理之dataframe的groupby操作方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 發(fā)布你的Python模塊詳解

    發(fā)布你的Python模塊詳解

    這篇文章主要介紹了發(fā)布你的Python模塊詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • pycharm如何設(shè)置官方中文(如何漢化)

    pycharm如何設(shè)置官方中文(如何漢化)

    這篇文章主要介紹了pycharm如何設(shè)置官方中文(如何漢化),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python 元類使用說明

    Python 元類使用說明

    元類就是類的模板——太形象了了呀,霍霍。
    2009-12-12
  • python打印異常信息的兩種實(shí)現(xiàn)方式

    python打印異常信息的兩種實(shí)現(xiàn)方式

    今天小編就為大家分享一篇python打印異常信息的兩種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python裝飾器代碼詳解

    Python裝飾器代碼詳解

    這篇文章主要介紹了python 一篇文章搞懂裝飾器所有用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • keras讀取h5文件load_weights、load代碼操作

    keras讀取h5文件load_weights、load代碼操作

    這篇文章主要介紹了keras讀取h5文件load_weights、load代碼操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 100行Python代碼實(shí)現(xiàn)自動搶火車票(附源碼)

    100行Python代碼實(shí)現(xiàn)自動搶火車票(附源碼)

    又到年底了,相信對于在外地的朋友們來說,火車票是到年底最頭痛的一件事了,但作為程序員的你怎么能一樣呢?快發(fā)揮你的特長,下面這篇文章主要給大家介紹了如果通過100行Python代碼實(shí)現(xiàn)自動搶火車票的相關(guān)資料,需要的朋友可以參考下。
    2018-01-01

最新評論

肇州县| 桂林市| 胶州市| 广南县| 永兴县| 安龙县| 偏关县| 霍城县| 白玉县| 马边| 富蕴县| 淮滨县| 灵武市| 抚州市| 射洪县| 贵德县| 壶关县| 黑龙江省| 湘乡市| 东兴市| 富顺县| 文山县| 岚皋县| 台南市| 周至县| 专栏| 乐山市| 惠来县| 革吉县| 江门市| 凤台县| 绥芬河市| 竹溪县| 安徽省| 甘泉县| 昌乐县| 四子王旗| 湘潭县| 瓦房店市| 安图县| 岱山县|