網絡編程之基礎篇二

1. 編程語言的發展: 編程

 機器語言(二進制) 混編語言(指令,命令形式) 高級語言(面向過程/面向對象)併發

2. 操做系統的目標: 方便用戶使用,低耦合,高可用異步

    計算機組成: cpu,主板,存儲設備,輸入設備,輸出設備編程語言

3. 並行: 指同一時間點,有多個程序在同時進行函數

   併發: 指同一時間斷內,多個程序都不分前後的依次被執行過spa

4. 進程的組成: 代碼段,數據段,PCB(進程控制塊)操作系統

    進程的三個基本狀態:對象

    1)就緒狀態: 得到了除CPU以外運行所須要的全部資源繼承

    2)執行狀態: 得到了全部資源,處於正在執行的狀態接口

    3)阻塞狀態: 因各類緣由,致使進程放棄了CPU,進程處於內存中,沒有繼續執行

    特殊狀態:  掛起狀態,瞭解便可, 放棄CPU,也不在內存中.

5. 操做系統的做用:1.封裝了所欲硬件接口,方便用戶使用; 2.對計算機內全部資源,

   行統一的調度和分配

6. 多進程相關概念: 並行,併發,同步,異步,阻塞,非阻塞

   : 早期CPU是單核時,沒有並行的概念,只有併發(微觀上串行,宏觀上並行)

   獲取當前進程的pid: os.getpid();  獲取當前進程父進程的pid: os.getppid()

   開啓子進程的兩種方式:

     1)  p=Process( target=函數名, args=(參數1,參數2...) )    當定義的函數不須要參數時,args能夠沒有

     2) 自定義個類,去繼承process

  

進程的經常使用方法:

      p.start() 告知操做系統,給開啓個子進程.本質調用的p.run()

      p.join() 異步變同步(等待子進程結束,再執行join下的主進程代碼)

      p.is_alive() 打印便可,用來判斷p進程是否還活着,結果爲TrueFalse

      p.terminate() 告知操做系統,結束掉p進程

 進程的經常使用屬性:

      p.name=’xxx’ 用在主程序裏if判斷下,用來給子進程p來命名的

      p.pid   注意,pid後是不帶括號的,用來查詢子進程ppid.注意區分os.getpid()

                 p.pid是用在主進程中查ppid,os.getpid()是用來查當前進程的pid

      p.daemon=True p進程設置爲守護進程(daemon=後默認是false,即普通進程普通進程是當全部子進程都結束後主進

            程才結束,(此時主進程中的全部代碼都已經執行完了,程序會停在最後的空白處,注意和p.join()區分開).

            護進程是指:當主進程結束後子進程便會當即結束.且守護進程不能再建立子進程.注意:p.daemon=True

            須放在p.start()以前才能生效...必考daemon寫法

演示:

from  multiprocessing  import  Process  導入模塊

n=1000

def  fun(n):

     print(‘這是第%s’  %  (n) )

     print(‘子進程和主進程的pid分別是:’ , os.getpid() , os.getppid() )

if __name__ == ‘__main__’:

     n=1

     p=process( target=fun, args=(n,)) 實列個對象,對象目標是fun,args後的東西是給目標fun函數

      傳的參數,必須是個元組,參數有多個時以逗號隔開,不須要參數時可不寫,當傳的參數和子進程

  中的衝突時,以主進程爲準. 列中打印的n值爲1, 當主不傳n,打印的結果爲1000

    p.daemon=True 表示把子程p設爲守護進程,必須在start,且子進程內不能有開啓子進程的代碼

    p.start()       告知操做系統開啓個進程,內容p中的全部

    p.join()     是讓主進程呆在這裏,p子進程結束後再往下執行主進程代碼  

   p.terminate()   告知操做系統殺死這個p進程

    print(p.is_alive)  查看p進程是否還活着

   p.name=’xxx’  把子進程p命名爲xxx

   print( p.name , p.pid , p.daemon ) 分別是用來查看子進程p的名字,pid和是否爲守護進程

相關文章
相關標籤/搜索