昨日課程回顧:
編程語言的發(fā)展:
機器語言: 二進制
匯編語言: 指令
高級語言: 面向過程(C) 面向?qū)ο?Python)
操作系統(tǒng)的目標:
為用戶更方便的使用
并行:指兩件或多間事情,在同一時間點同時執(zhí)行
并發(fā):指兩件或多見事情,在同一時間間隔內(nèi)同時執(zhí)行
計算機組成:
CPU,主板,儲存,輸入,輸出
進程由三部分組成:
代碼段,數(shù)據(jù)段,PCB(進程控制塊)
進程的特征:
動態(tài)性:進程的實質(zhì)是程序在多道程序系統(tǒng)中的一次執(zhí)行過程,進程是動態(tài)產(chǎn)生,動態(tài)消亡的。
并發(fā)性:任何進程都可以同其他進程一起并發(fā)執(zhí)行
獨立性:進程是一個能獨立運行的基本單位,同時也是系統(tǒng)分配資源和調(diào)度的獨立單位;
異步性:由于進程間的相互制約,使進程具有執(zhí)行的間斷性,即進程按各自獨立的、不可預(yù)知的速度向前推進
多個不同的進程可以包含相同的程序:一個程序在不同的數(shù)據(jù)集里就構(gòu)成不同的進程,能得到不同的結(jié) 果;但是執(zhí)行過程中,程序不能發(fā)生改變。
進程的三個基本狀態(tài):
就緒狀態(tài):獲得了除CPU之外運行的所有資源
執(zhí)行狀態(tài):獲得了所有資源,處于正在執(zhí)行的狀態(tài)
阻塞狀態(tài):因為各種原因,導(dǎo)致進程放棄了CPU,導(dǎo)致進程無法繼續(xù)執(zhí)行,此時進程處于內(nèi)存中
dos系統(tǒng): 單用戶單任務(wù)
windows系統(tǒng): 單用戶多任務(wù)(早期的windows)
unix系統(tǒng): 多用戶多任務(wù)
為什么要有操作系統(tǒng)?
1 封裝了所有硬件的接口,是用戶更方便的使用
2 對于計算機內(nèi)所有資源,進行一個合理的調(diào)度和分配
多進程的模塊:
multiprocessing
process
并行 : 并行是指兩者同時執(zhí)行,比如有兩條車道,在某一個時間點,兩條車道上都有車在跑;(資源夠用,比如三個線程,四核的CPU )
并發(fā) : 并發(fā)是指資源有限的情況下,兩者交替輪流使用資源,比如只有一條車道(單核CPU資源),那么就是A車先走,在某個時刻A車退出把道路讓給B走,B走完繼續(xù)給A ,交替使用,目的是提高效率。
并行是從微觀上,也就是在一個精確的時間片刻,有不同的程序在執(zhí)行,這就要求必須有多個處理器。
并發(fā)是從宏觀上,在一個時間段上可以看出是同時執(zhí)行的,比如一個服務(wù)器同時處理多個session。
早期單核CPU時候,沒有并行的概念,只有并發(fā)(微觀上串行,宏觀上并行)
站在CPU角度看 站在人的角度看就是同時有很多任務(wù)同時執(zhí)行
,【碎他】【有虎】【本就】【機會】【個性】【很不】【間都】【無盡】【強者】【族沒】【她那】【好東】【撲面】【體異】1938年為了守住山西,川軍47軍將士在李家鈺將軍的率領(lǐng)下,在東陽關(guān)死守3日犧牲兩千余人。9月30日首個國家烈士紀念日前后,《華西都市報》連續(xù)報道了東陽關(guān)戰(zhàn)役后,抗戰(zhàn)老兵的系列報道引起了百度霸屏不少人的關(guān)注。家住巴中市平昌縣97歲陳海才老人看了本報的報道后,把自己埋藏在心底的秘密告訴了家人,“我當(dāng)年也在東陽關(guān)打過鬼子,現(xiàn)在要入土了,想見見當(dāng)年的戰(zhàn)友。”趁對方做雞蛋餅的間隙,記者和攤主聊了起來,她告訴記者她姓董,在這里賣雞蛋餅已經(jīng)10多年了,附近人都喜歡吃她做的雞蛋餅?!拔矣玫牟牧隙己軐嵲?,大家都能看得到,也吃得放心。”說起自己的雞蛋餅,董阿姨說真的沒什么秘訣,主要是自己材料放得足,貨真價實?!百嵅坏蕉嗌馘X,就圖個開心。,
在了解其他概念之前,我們首先要了解進程的幾個狀態(tài)。在程序運行的過程中,由于被操作系統(tǒng)的調(diào)度算法控制,程序會進入幾個狀態(tài):就緒,運行和阻塞。
?。?)就緒(Ready)狀態(tài)
當(dāng)進程已分配到除CPU以外的所有必要的資源,只要獲得處理機便可立即執(zhí)行,這時的進程狀態(tài)稱為就緒狀態(tài)。
?。?)執(zhí)行/運行(Running)狀態(tài)當(dāng)進程已獲得處理機,其程序正在處理機上執(zhí)行,此時的進程狀態(tài)稱為執(zhí)行狀態(tài)。
(3)阻塞(Blocked)狀態(tài)正在執(zhí)行的進程,由于等待某個事件發(fā)生而無法執(zhí)行時,便放棄處理機而處于阻塞狀態(tài)。引起進程阻塞的事件可有多種,例如,等待I/O完成(input)、申請緩沖區(qū)不能滿足、等待信件(信號)等。
同步:
所謂同步就是一個任務(wù)的完成需要依賴另外一個任務(wù)時,只有等待被依賴的任務(wù)完成后,依賴的任務(wù)才能算完成,這是一種可靠的任務(wù)序列。要么成功都成功,失敗都失敗,兩個任務(wù)的狀態(tài)可以保持一致。
異步:
所謂異步是不需要等待被依賴的任務(wù)完成,只是通知被依賴的任務(wù)要完成什么工作,依賴的任務(wù)也立即執(zhí)行,只要自己完成了整個任務(wù)就算完成了。至于被依賴的任務(wù)最終是否真正完成,依賴它的任務(wù)無法確定,所以它是不可靠的任務(wù)序列。
from multiprocessing import Process
獲取當(dāng)前進程的pid號, os.getpid()
獲取當(dāng)前進程的父進程的pid號, os.getppid()
開啟子進程的方式:
1 p = Process (target = func,args=(,))
target : 是子進程要執(zhí)行的任務(wù)
arges:是父進程給子進程傳遞的參數(shù)(必須是元組的形式)
2 自定義類,去繼承Process
進程的常用方法:
(1) start() 開啟一個子進程
(2) join() 異步變同步(就是讓父進程停留在join這句話,等待子進程執(zhí)行結(jié)束,父進程在繼續(xù)執(zhí)行)
(3) is_alive() 判斷進程是否還活著
(4) terminate() 殺死進程
進程的常用屬性:
(1) p.name = 給p進程一個名字
(2) p.pip 返回p進程的pid
(3) p.daemon=True 及那個p進程設(shè)置位守護進程.(True為守護進程,Flase為普通進程)
守護進程的兩個特點:
守護進程會隨著父進程的結(jié)束而結(jié)束
守護進程不能再創(chuàng)建子進程(不能要孩子)
|轉(zhuǎn)載請注明來源地址:蜘蛛池出租 http://www.wholesalehouseflipping.com/
專注于SEO培訓(xùn),快速排名黑帽SEO https://www.heimao.wiki
