進程隊列與線程隊列的區別python
進程切換耗費大量資源多線程
線程特色:進程執行的基本單元qq功能併發
一個程序至少包含一個進程,一個進程至少包含一個線程,進程只是一個容器,真正執行的是線程異步
進程在執行過程當中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序運行效率優化
線程是最小的執行單元,進程是最小的資源單位,是操做系統運行程序的基本單位。操作系統
一個線程能夠建立或者撤銷另外一個線程,同一進程中的多個線程之間能夠併發執行。線程
守護進程的概念:子線程守護主線程,主線程退出,子線程無論結束與否都中斷執行。協程
同步鎖:對象
併發:系統具有處理多個任務的能力。blog
並行:系統具有同時處理多個任務的能力。
同步:當一個進程須要接受外部的數據時(IO操做),阻塞
異步:
爲何有的時候使用多線程反而要耗費更多的時間?:充斥着大量的切換
全局解釋器鎖:GIL(跟python不要緊,與python的解釋器有關係)
目的:在同一時刻只能一個進程中只能有有一個線程被運行(無論有多少cpu,無論啓動多少線程)
操做系統切換的因素:IO和時間輪詢兩種狀況。
優化解決辦法:
影響:進程開銷大
任務分爲:IO密集型、計算密集型
對於io密集型的任務,python的多線程有意義,對於計算密集型的任務python的多線程能夠採用多進程
同步鎖:(100個線程同時操做一個數據,須要用到同步鎖,好比下訂單)一般被用來實現共享資源的同步訪問,爲每個共享資源建立一個Lock對象當你須要訪問該資源時,調用qcuqire方法來獲取鎖對象(若是其餘線程已經得到該鎖,則當前線程需等待期被釋放),待資源訪問完後,在調用release方法釋放鎖
死鎖
python下多線程的特色:無法利用多核,意味着沒法實現真正的並行的效果。並非一無可取,其意義:
解決辦法:1.多進程
2.所進程+協程
協程: