進程與線程

進程隊列與線程隊列的區別python

進程切換耗費大量資源多線程

線程特色:進程執行的基本單元qq功能併發

  1. 共享進程的資源,
  2. 切換少

一個程序至少包含一個進程,一個進程至少包含一個線程,進程只是一個容器,真正執行的是線程異步

進程在執行過程當中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序運行效率優化

線程是最小的執行單元,進程是最小的資源單位,是操做系統運行程序的基本單位。操作系統

一個線程能夠建立或者撤銷另外一個線程,同一進程中的多個線程之間能夠併發執行。線程

守護進程的概念:子線程守護主線程,主線程退出,子線程無論結束與否都中斷執行。協程

同步鎖:對象

併發:系統具有處理多個任務的能力。blog

並行:系統具有同時處理多個任務的能力。

同步:當一個進程須要接受外部的數據時(IO操做),阻塞

異步:

爲何有的時候使用多線程反而要耗費更多的時間?:充斥着大量的切換

 

全局解釋器鎖:GIL(跟python不要緊,與python的解釋器有關係)

目的:在同一時刻只能一個進程中只能有有一個線程被運行(無論有多少cpu,無論啓動多少線程)  

操做系統切換的因素:IO和時間輪詢兩種狀況。

優化解決辦法:

  1. 把線程發在多個進程中

影響:進程開銷大

  1. 最好優化方法:多進程+協程

任務分爲:IO密集型、計算密集型

對於io密集型的任務,python的多線程有意義,對於計算密集型的任務python的多線程能夠採用多進程

 

同步鎖:(100個線程同時操做一個數據,須要用到同步鎖,好比下訂單)一般被用來實現共享資源的同步訪問,爲每個共享資源建立一個Lock對象當你須要訪問該資源時,調用qcuqire方法來獲取鎖對象(若是其餘線程已經得到該鎖,則當前線程需等待期被釋放),待資源訪問完後,在調用release方法釋放鎖

死鎖

 python下多線程的特色:無法利用多核,意味着沒法實現真正的並行的效果。並非一無可取,其意義:

 

解決辦法:1.多進程

2.所進程+協程

協程:

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息