Python中的线程、进程、协程以及区别
進程,是執行中的計算機程序。也就是說,每個代碼在執行的時候,首先本身即是一個進程。一個進程具有:就緒,運行,中斷,僵死,結束等狀態(不同操作系統不一樣)。
運行中每個進程都擁有自己的地址空間、內存、數據棧及其它資源。
操作系統本身自動管理著所有的進程(不需要用戶代碼干涉),并為這些進程合理分配可以執行時間。
進程可以通過派生新的進程來執行其它任務,不過每個進程還是都擁有自己的內存和數據棧等。
進程間可以通訊(發消息和數據),采用 進程間通信(IPC) 方式。
?
線程,是在進程中執行的代碼。
一個進程下可以運行多個線程,這些線程之間共享主進程內申請的操作系統資源。
線程,必須在一個存在的進程中啟動運行
線程使用進程獲得的系統資源,不會像進程那樣需要申請CPU等資源
線程無法給予公平執行時間,它可以被其他線程搶占,而進程按照操作系統的設定分配執行時間
每個進程中,都可以啟動很多個線程
?
協程: 協程,又稱微線程,纖程,英文名Coroutine。協程的作用,是在執行函數A時,可以隨時中斷,去執行函數B,然后中斷繼續執行函數A(可以自由切換)。但這一過程并不是函數調用(沒有調用語句),這一整個過程看似像多線程,然而協程只有一個線程執行.
協程的主要特色是:
協程間是協同調度的,這使得并發量數萬以上的時候,協程的性能是遠遠高于線程。
?
進程和線程的區別
一個進程中的各個線程與主進程共享相同的資源,與進程間互相獨立相比,線程之間信息共享和通信更加容易(都在進程中,并且共享內存等)。
線程一般以并發執行,正是由于這種并發和數據共享機制,使多任務間的協作成為可能。
進程一般以并行執行,這種并行能使得程序能同時在多個CPU上運行;
區別于多個線程只能在進程申請到的的“時間片”內運行(一個CPU內的進程,啟動了多個線程,線程調度共享這個進程的可執行時間片),進程可以真正實現程序的“同時”運行(多個CPU同時運行)。
?
協程優點:
1. 協程的切換開銷更小,屬于程序級別的切換,操作系統完全感知不到,因而更加輕量級
2. 單線程內就可以實現并發的效果,最大限度地利用cpu
協程缺點:
1.協程的本質是單線程下,無法利用多核,可以是一個程序開啟多個進程,每個進程內開啟多個線程,每個線程內開啟協程
2.協程指的是單個線程,因而一旦協程出現阻塞,將會阻塞整個線程
總結
以上是生活随笔為你收集整理的Python中的线程、进程、协程以及区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue第二次ajax失效,解决VUE-R
- 下一篇: websocket python爬虫_p