多進(jìn)程知識點(diǎn)總結(jié)1

1.fork函數(shù)

此處需要注意的是

當(dāng)調(diào)用fork方法 铃诬,之后的代碼會運(yùn)行兩次
os 中的fork只能在liunx中使用
fork方法有一個(gè)返回值。若為0表示子進(jìn)程
獲取子進(jìn)程的編號 os.getpid 獲取父進(jìn)程的編號

實(shí)例:

"""
os 中的fork只能在liunx中使用
"""

import os
print("daima")
# 運(yùn)行一個(gè)子進(jìn)程

# 當(dāng)調(diào)用fork方法 古程,之后的代碼會運(yùn)行兩次
re = os.fork()
print("res = ",re)
# fork方法有一個(gè)返回值谈截。若為0表示子進(jìn)程
if re == 0:
# 獲取子進(jìn)程的編號 os.getpid  獲取父進(jìn)程的編號os.getppid
    print("子",os.getpid(),os.getppid())
else:
    print("主",os.getpid())

print("代碼完成")
======================================================

os.fork()
os.getpid()
os.getppid()
2.全局變量問題

全局變量不共享玖院,進(jìn)程獨(dú)自占有一份

實(shí)例:

import os

num = 10

def sum1():
    print("111")
    global num
    num += 10
    print("unm")

def sum2():
    print("22222")
    global num
    num += 10
    print(num)

res = os.fork()
if res == 0:
    print("子進(jìn)程運(yùn)行")
    sum1()

else:
    print("主進(jìn)程運(yùn)行")
    sum2()

print("程序運(yùn)行結(jié)束")

3.多個(gè)fork問題

遇見fork將一個(gè)進(jìn)程開辟成兩個(gè)

實(shí)例

import os

res = os.fork()
if res == 0:
    print("1")
else:
    print("2")

res2 = os.fork()
if res2 == 0:
    print("3")
else:
    print("4")

print("程序運(yùn)行結(jié)束")

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


image.png
4.window環(huán)境下使用multiprocessing

我們使用os.fork()方法實(shí)現(xiàn)了多進(jìn)程,但是這種方案只能在Linux下運(yùn)行律杠,window環(huán)境下是無法運(yùn)行的潭流,那么有沒有可以實(shí)現(xiàn)在任何平臺都能運(yùn)行的多進(jìn)程了竞惋,有!Python為大家提供了multiprocessing模塊用來實(shí)現(xiàn)多進(jìn)程灰嫉。

multiprocessing模塊實(shí)例:

主進(jìn)程不變拆宛,創(chuàng)建子進(jìn)程
from multiprocessing import Process
import time
import os

def download(path):
    print("開始下載")
    for x in range(5):
        print("%s開始下載中……" %path)
        print(os.getpid())
        print(os.getppid())
        time.sleep(1)
    print("下載結(jié)束")

def printMsg(msg):
    print("開始打印")
    for x in range(5):
        print("打印中……%s" % msg)
        print(os.getpid())
        print(os.getppid())
        time.sleep(1)
    print("打印結(jié)束")

if __name__ == '__main__':
    start_time = time.time()
    print("程序開始運(yùn)行了")
    # download("www.xxx.com")
    # 多進(jìn)程
    # 構(gòu)建進(jìn)程對象
    t1 = Process(target=download, args=("www.xxx.com",), name="download")

    # 啟動進(jìn)程
    t1.start()
    # 構(gòu)建進(jìn)程對象
    t2 = Process(target=printMsg, args=("劉建宏真帥,今天天氣真熱K先觥浑厚!",), name="print")
    # 啟動進(jìn)程
    t2.start()

    print("程序結(jié)束", time.time() - start_time)

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

image.png
5.多進(jìn)程中常見方法

啟動進(jìn)程

t1.start()

守護(hù)進(jìn)程放在start之前 ,把這個(gè)進(jìn)程注冊成守護(hù)進(jìn)行
守護(hù)進(jìn)程依賴于主進(jìn)程存活根盒,主進(jìn)程結(jié)束守護(hù)進(jìn)程結(jié)束

t1.daemon = True

獲取進(jìn)程名稱.在多進(jìn)程中钳幅,子進(jìn)程名字默認(rèn)是Process - n

print(t1.name)

判斷進(jìn)程是否被殺死

if t1.is_alive():
    print(t1.is_alive())

殺死進(jìn)程

    t1.terminate()

進(jìn)程對象的join方法,使主進(jìn)程等待當(dāng)前子進(jìn)程運(yùn)行結(jié)束后再進(jìn)行運(yùn)行

t1.join()

綜合實(shí)例:

def run(msg):
    for x in range(10):
        print("一個(gè)子進(jìn)程")
        print(msg)
        print("子進(jìn)程結(jié)束")
        time.sleep(1)

if __name__ == '__main__':
    print("主進(jìn)程開始")
    t1 = Process(target=run, args="1", name="zi")
    t2 = Process(target=run, args="2", name="zi1")

    # 守護(hù)進(jìn)程放在start之前 炎滞,把這個(gè)進(jìn)程注冊成守護(hù)進(jìn)行
    # 守護(hù)進(jìn)程依賴于主進(jìn)程存活敢艰,主進(jìn)程結(jié)束守護(hù)進(jìn)程結(jié)束
    t1.daemon = True

    # 啟動進(jìn)程
    t1.start()
    t2.start()

    # 獲取進(jìn)程名稱
    # 在多進(jìn)程中,子進(jìn)程名字默認(rèn)是Process - n
    print(t1.name)
    print(t2.name)

    # 判斷進(jìn)程是否被殺死
    if t1.is_alive():
        print(t1.is_alive())
        # 殺死進(jìn)程
        t1.terminate()

    # 進(jìn)程對象的join方法厂榛,使主進(jìn)程等待當(dāng)前
    # 子進(jìn)程運(yùn)行結(jié)束后再進(jìn)行運(yùn)行
    t1.join()

    print("zhu")
6.進(jìn)程類

進(jìn)程的實(shí)現(xiàn):
1.需要基礎(chǔ)multiprocessing模塊中Process類
2.重寫run方法盖矫,run方法就是我們要執(zhí)行的方法

from multiprocessing import Process
import time
"""
進(jìn)程的實(shí)現(xiàn):
     1.需要基礎(chǔ)multiprocessing模塊中Process類
     2.重寫run方法,run方法就是我們要執(zhí)行的方法
"""


class MyProcess(Process):

    def __init__(self, name, age):
        # 第一個(gè)參數(shù)是進(jìn)程的名字不能寫成普通參數(shù)击奶,固定寫法
        super().__init__(name=name)
        self.age = age

# RUN方法就是進(jìn)程需要的執(zhí)行的方法
    def run(self):
        print("獨(dú)立子進(jìn)程")
        time.sleep(1)
        print("子進(jìn)程結(jié)束")

if __name__ == '__main__':
    print("主進(jìn)程開始")
    m1 = MyProcess("1", "2")
    m1.start()
    print("主進(jìn)程結(jié)束")
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市责掏,隨后出現(xiàn)的幾起案子柜砾,更是在濱河造成了極大的恐慌,老刑警劉巖换衬,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痰驱,死亡現(xiàn)場離奇詭異,居然都是意外死亡瞳浦,警方通過查閱死者的電腦和手機(jī)担映,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叫潦,“玉大人蝇完,你說我怎么就攤上這事〈H铮” “怎么了短蜕?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長傻咖。 經(jīng)常有香客問我朋魔,道長,這世上最難降的妖魔是什么卿操? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任警检,我火速辦了婚禮孙援,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扇雕。我一直安慰自己拓售,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布洼裤。 她就那樣靜靜地躺著邻辉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腮鞍。 梳的紋絲不亂的頭發(fā)上值骇,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機(jī)與錄音移国,去河邊找鬼吱瘩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛迹缀,可吹牛的內(nèi)容都是我干的使碾。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼祝懂,長吁一口氣:“原來是場噩夢啊……” “哼票摇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起砚蓬,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤矢门,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后灰蛙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祟剔,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年摩梧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了物延。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仅父,死狀恐怖叛薯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情驾霜,我是刑警寧澤案训,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站粪糙,受9級特大地震影響强霎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蓉冈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一城舞、第九天 我趴在偏房一處隱蔽的房頂上張望轩触。 院中可真熱鬧,春花似錦家夺、人聲如沸脱柱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽榨为。三九已至,卻和暖如春煌茴,著一層夾襖步出監(jiān)牢的瞬間随闺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工蔓腐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留矩乐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓回论,卻偏偏與公主長得像散罕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子傀蓉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

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

  • 必備的理論基礎(chǔ) 1.操作系統(tǒng)作用: 隱藏丑陋復(fù)雜的硬件接口欧漱,提供良好的抽象接口。 管理調(diào)度進(jìn)程葬燎,并將多個(gè)進(jìn)程對硬件...
    drfung閱讀 3,530評論 0 5
  • 現(xiàn)在硫椰, 多核CPU已經(jīng)非常普及了, 但是萨蚕, 即使過去的單核CPU, 也可以執(zhí)行多任務(wù)蹄胰。 CPU執(zhí)行代碼都是順序執(zhí)行...
    LittlePy閱讀 4,791評論 0 3
  • 1.進(jìn)程 1.1多線程的引入 現(xiàn)實(shí)生活中 有很多的場景中的事情是同時(shí)進(jìn)行的岳遥,比如開車的時(shí)候手和腳共同來駕駛汽車,再...
    TENG書閱讀 498評論 0 0
  • 文丨趙小冊 圖丨網(wǎng)絡(luò) 01 人和人之間的感覺蠻微妙的裕寨。這種感覺就像飄忽不定的天氣浩蓉、或者飄忽不定的化學(xué)變化一樣。 也...
    趙小冊閱讀 314評論 0 0
  • 沒什么理由也沒什么原因∏烀ǎ——你像條狗的原因只是你因?yàn)槟阏娴暮芄贰娴娜瞎臁R灿腥藢δ銍u寒問暖,但你遲鈍地不知道該做出...
    徐氏秋白閱讀 160評論 0 0