亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

進程及Python實現

系統 1751 0

進程雜談

          
            #進程就是正在執行的一個過程,是對正在運行程序的一個抽象

#進程由程序、數據集和進程控制塊(最重要的,進程切換  狀態如何保存,恢復和記錄)組成

"""
進程調度:
    1.先來先服務
    2.短作業優先調度
    3.時間片輪轉法
    4.多級反饋隊列

進程遇到IO就會被掛起
"""

'''
將一個單獨的cpu變成多個
虛擬的cpu(多道技術:時間多路復用和空間
多路復用+硬件上支持隔離)
沒有進程的抽象,現代計算機將不復存在
'''

'''
操作系統的作用:
    1.隱藏丑陋復雜的硬件接口,提供良好的抽象接口
    2.管理,調度進程,并且將多個進程對硬件的競爭變得有序
'''

'''
多道技術:
    1.產生背景:針對單核,實現并發
    ps:現在的主機一般是多核,那么每個核都會利用多道技術
    空間復用
    時間復用
'''

'''
同步和異步是通訊方式,阻塞和非阻塞是等待狀態
同步 阻塞:發出消息,不回就傻等。跟女神聊天,站在一旁等,什么都不干
同步 非阻塞:發消息,不回就等,但是干別的事情。跟女神聊天,站在一旁等,一邊吃飯一邊回頭看看手機等消息
異步 非阻塞:發消息,不回消息也不等,就去干別的。跟女神聊天,不回我就去外面打籃球,等聽到電話響了就去聊天
異步 阻塞:發消息,不回也不等,但是也不干別的。跟女神聊天,不回我就在屋里想其他美女,啥也不干。

'''

"""
串行
并發    切換+保存狀態
并行

CPU切換

開啟子進程的原因是為了支持并發

#這是一個函數,也相當于一個作業,
執行時開啟一個子進程,會把父進程整個放到新的名稱空間里面執行
,所以x=1也會放進去



x = 1
def task(): 
    print(x)
    
    
主進程會等子進程全部運行結束才會結束



#僵尸進程:父進程的子進程結束的時候父進程沒有wait()情況下子進程會變成僵尸進程,即子進程先結束,父進程未回收子進程,沒有釋放子進程占用的資源

#孤兒進程:一個父進程退出,它的一個或多個子進程還在運行,那么這些子進程將成為孤兒進程。孤兒進程將會被init進程(進程號為1)所收養,并由init進程對它們完成狀態收集工作(是無害的)

#父進程等著子進程都死,回收僵尸進程,也是無害的

#父進程一直不死,造成了大量僵尸進程,占用了大量的pid號,是有害的,因為pid號是有限的,最簡單的解決辦法就是殺死父進程

          
        

python實現開啟進程

          
            # multiprocess模塊:其實是一個操作管理進程的包,
# 包括創建進程部分,進程同步部分,進程池部分,
# 進程之間的數據共享


#下面的代碼會報錯,因為子進程會把父進程的代碼拷貝運行,再生成子進程在拷貝,,,,類似遞歸

from multiprocessing import Process
import time

def task():
    print('進程 start')
    time.sleep(2)
    print('進程 end')

p = Process(target=task)#實例化出來對象,向操作系統發送開啟子進程的請求,還沒開啟子進程。
p.start()#告訴操作系統我要開啟子進程



#01 開啟子進程的方式一(調用模塊改進執行方法,加__name__ = __main__)


from multiprocessing import Process
import time

def Study(name, age):
    print(f'{name}啟動了子進程1')
    print(f'{name}的年齡是{age}')

def Play(name,age):
    print(f'{name}啟動了子進程2')
    print(f'{name}的年齡是{age}')

if __name__ == '__main__':
    p = Process(target=Study, args=('nick', 18))
    p2 = Process(target=Play, args=('tank', 49))
    p.start() #只是發送請求開啟子進程,
    # time.sleep(2)
    p2.start()#只是發送請求開啟子進程,
    print('執行了父進程') #按順序執行下來,比上面兩個start要先執行

#開啟子進程的方式二(寫一個類繼承Process類)
from multiprocessing import Process

class Study(Process):
    def __init__(self, name):
        super().__init__()  #寫完這個,下面的name又變成了Test-2
        self.name = name
        print(name)
    def run1(self, v):
        self.v = v
        print(f'{self.name}的跑步速度是{v}')

if __name__ == '__main__':
    p = Study('nick')
    p.start()
    p.run1(29)
    
#3 驗證進程的內存空間隔離
from multiprocessing import Process
import time

x = 0
def task():
    global x
    x = 100
    print(f'子進程的x修改為了{x}')
if __name__ == '__main__':
    p = Process(target=task)
    p.start()
    time.sleep(3)
    print(x) #先打印100,再打印0

          
        

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天爱夜夜爽 | 国产一区二区三区成人久久片 | 奇米在线视频 | 日本一级高清片免费 | 日日噜噜夜夜躁躁狠狠 | 高清在线亚洲精品国产二区 | 亚洲欧美精品一区二区 | 久久午夜一区二区 | 日韩欧美一区二区在线观看 | 4hu四虎永久免在线视看 | 久久一本色道综合 | 亚洲欧美国产精品久久久 | 国产乱码精品一区二区三上 | 久久成人国产精品免费 | 起碰成人免费公开网视频 | 猫咪视频成人永久免费观看 | 天天躁日日躁狠狠躁黑人躁 | 91久草视频| 毛片免费观看日本中文 | 国产福利视频一区二区微拍 | 国产精品免费大片 | 爱久久www.35669 | 国产成人一区二区三中文 | 国产手机在线国内精品 | 日本毛片免费看 | 久久思| 亚洲美女性生活视频 | 中文字幕在线看日本大片 | 亚洲欧美日韩综合一区久久 | 操美女的视频网站 | 久久久久久久久综合影视网 | 亚洲成年人视频 | 国产精品视频在线播放 | 天天干在线影院 | 免费欧美一级 | 一级成人a毛片免费播放 | 亚洲午夜天堂 | 久草在线这里只有精品 | 日本三级中文 | 最新国产精品视频 | 97se亚洲综合在线天天 |