多進(jìn)程

Multiprocessing庫里有Process

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

在多進(jìn)程中岩四,同樣存在守護(hù)進(jìn)程的概念哭尝,如果一個(gè)進(jìn)程被設(shè)置為守護(hù)進(jìn)程,當(dāng)父進(jìn)程結(jié)束后剖煌,子進(jìn)程會(huì)自動(dòng)被終止材鹦,我們可以通過設(shè)置 daemon 屬性來控制是否為守護(hù)進(jìn)程。

from multiprocessing import Process
import time

class MyProcess(Process):
    def __init__(self, loop):
        Process.__init__(self)
        self.loop = loop


    def run(self):
        for count in range(self.loop):
            time.sleep(1)
            print(f'pid: {self.pid} loopCount:{count}')

if __name__ == '__main__':
    for i in range(2, 5):
        p = MyProcess(i)
        p.daemon = True
        p.start()

        print('Main Process is ended')

因?yàn)橹鬟M(jìn)程什么也沒有做耕姊,所以輸出

print('Main Process is ended')

這樣做法就是不用擔(dān)心主進(jìn)程結(jié)束后避免子進(jìn)程獨(dú)立運(yùn)行

進(jìn)程等待

如果我們要子進(jìn)程運(yùn)行完畢才讓主進(jìn)程結(jié)束桶唐,這里就可以用join方法來實(shí)現(xiàn)進(jìn)程等待

 for i in range(2, 5):
        p = MyProcess(i)
        precesses.append(p)
        p.daemon = True
        p.start()
    for p in precesses:
        p.join()

join方法默認(rèn)是無限期的,如果某一個(gè)子進(jìn)程陷入死循環(huán)箩做,主進(jìn)程就會(huì)無限等待下去,解決的方法是給子進(jìn)程指定一個(gè)最長(zhǎng)的等待時(shí)長(zhǎng)妥畏。例如我們輸入1就是等待1秒邦邦。代碼如下

 for i in range(2, 5):
        p = MyProcess(i)
        precesses.append(p)
        p.daemon = True
        p.start()
    for p in precesses:
        p.join(1)

運(yùn)行結(jié)果

pid: 29136 loopCount:0
pid: 43628 loopCount:0
pid: 43328 loopCount:0
pid: 29136 loopCount:1
pid: 43628 loopCount:1
pid: 43328 loopCount:1
Main Process is ended

終止進(jìn)程

當(dāng)然,終止進(jìn)程不止有守護(hù)進(jìn)程這一種做法醉蚁,我們也可以通過 terminate 方法來終止某個(gè)子進(jìn)程燃辖,另外我們還可以通過 is_alive 方法判斷進(jìn)程是否還在運(yùn)行。

import multiprocessing
import time

def process():
    print('Starting')
    time.sleep(5)
    print('Finished')

if __name__ == '__main__':
    p = multiprocessing.Process(target=process)
    print('Before:', p, p.is_alive())

    p.start()
    print('During:', p ,p.is_alive())

    p.terminate()
    print('Terminate:',p ,p.is_alive())

    p.join()
    print('Joined:', p ,p.is_alive())

在上面的例子中网棍,我們用Process創(chuàng)建了一個(gè)進(jìn)程黔龟,接著調(diào)用start方法啟動(dòng)這個(gè)進(jìn)程,然后調(diào)用terminate方法將進(jìn)程終止滥玷,最后調(diào)用join方法氏身。另外,在進(jìn)程運(yùn)行不同的階我們還通過 is_alive 方法判斷當(dāng)前進(jìn)程是否還在運(yùn)行惑畴。
運(yùn)行結(jié)果

Before: <Process(Process-1, initial)> False
During: <Process(Process-1, started)> True
Terminate: <Process(Process-1, started)> True
Joined: <Process(Process-1, stopped[SIGTERM])> False

這里有一個(gè)值得注意的地方蛋欣,在調(diào)用terminate方法之后,我們用is_alive方法獲取進(jìn)程的狀態(tài)發(fā)現(xiàn)依然還是運(yùn)行狀態(tài)如贷。在調(diào)用join方法之后陷虎,is_alive方法獲取進(jìn)程的運(yùn)行狀態(tài)才變?yōu)榻K止?fàn)顟B(tài)。

所以杠袱,在調(diào)用 terminate 方法之后尚猿,記得要調(diào)用一下 join 方法,這里調(diào)用 join 方法可以為進(jìn)程提供時(shí)間來更新對(duì)象狀態(tài)楣富,用來反映出最終的進(jìn)程終止效果凿掂。

進(jìn)程互斥鎖

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市纹蝴,隨后出現(xiàn)的幾起案子缠劝,更是在濱河造成了極大的恐慌潮梯,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惨恭,死亡現(xiàn)場(chǎng)離奇詭異秉馏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)脱羡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門萝究,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锉罐,你說我怎么就攤上這事帆竹。” “怎么了脓规?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵栽连,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我侨舆,道長(zhǎng)秒紧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任挨下,我火速辦了婚禮熔恢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘臭笆。我一直安慰自己叙淌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布愁铺。 她就那樣靜靜地躺著鹰霍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茵乱。 梳的紋絲不亂的頭發(fā)上衅谷,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音似将,去河邊找鬼获黔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛在验,可吹牛的內(nèi)容都是我干的玷氏。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼腋舌,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼盏触!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤赞辩,失蹤者是張志新(化名)和其女友劉穎雌芽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辨嗽,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡世落,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糟需。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屉佳。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖洲押,靈堂內(nèi)的尸體忽然破棺而出武花,到底是詐尸還是另有隱情,我是刑警寧澤杈帐,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布体箕,位于F島的核電站,受9級(jí)特大地震影響挑童,放射性物質(zhì)發(fā)生泄漏累铅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一炮沐、第九天 我趴在偏房一處隱蔽的房頂上張望争群。 院中可真熱鬧回怜,春花似錦大年、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至复旬,卻和暖如春垦缅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背驹碍。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工壁涎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人志秃。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓怔球,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親浮还。 傳聞我的和親對(duì)象是個(gè)殘疾皇子竟坛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容