python--線程和進程的初識

1、進程與線程之間的關係
  一、線程是屬於進程的,線程運行在進程空間內,同一進程所產生的線程共享同一內存空間,當進程退出時該進程所產生的線程都會被強制退出並清除。
  二、線程可與屬於同一進程的其它線程共享進程所擁有的所有資源,可是其自己基本上不擁有系統資源,只擁有一點在運行中必不可少的信息(如程序計數器、一組寄存器和棧)。

2、進程、線程的優缺點
  進程:
    優勢:同時利用多個cpu,可以同時進行多個操做
    缺點:耗費資源(從新開劈內存空間)

  線程:
    優勢:共享內存,IO操做時候,創造併發操做
      一、易於調度。
      二、提升併發性。經過線程可方便有效地實現併發性。進程可建立多個線程來執行同一程序的不一樣部分。
      三、開銷少。建立線程比建立進程要快,所需開銷不多
    缺點:搶佔資源
多線程


結論:
  一、進程不是越多越好,理想的是cpu個數=進程個數;線程也不是越多越好,具體案例具體分析,請求上下文切換耗時。
  二、計算機中執行任務的最小單元:線程
  三、IO密集型:多線程
  四、計算密集型:多進程
  五、GIL :全局解釋器鎖

3、進程的基本狀態及狀態之間的關係併發

  狀態:運行、阻塞、掛起阻塞、就緒、掛起就緒高併發

狀態之間的轉換:spa

(1)準備就緒的進程,被CPU調度執行,變成運行態;
(2)運行中的進程,進行I/O請求或者不能獲得所請求的資源,變成阻塞態;
(3)運行中的進程,進程執行完畢(或時間片已到),變成就緒態;
(4)將阻塞態的進程掛起,變成掛起阻塞態,當致使進程阻塞的I/O操做在用戶重啓進程前完成(稱之爲喚醒),掛起阻塞態變成掛起就緒態,當用戶在I/O操做結束以前重啓進程,掛起阻塞態變成阻塞態;
(5)將就緒(或運行)中的進程掛起,變成掛起就緒態,當該進程恢復以後,掛起就緒態變成就緒態;線程

相關文章
相關標籤/搜索