python gevent模块 下载_Python中的多任务,并行,并发,多线程,多进程,协程区别...
多任務
CPU承擔了所有的計算任務。一個CPU在一個時間切片里只能運行一個程序。當我們想同時運行多于一個程序的時候,就是多任務,例如同時運行微信,QQ,瀏覽器等等。多任務的目的是提升程序的執行效率,更充分利用CPU的資源。
- 并行
當任務數≤ CPU核數時,每一個任務都有對應的CPU來處理執行,多個務同時執行,互不搶占CPU資源,可以同時進行,這種方式我們稱之為并行(Parallel)。
- 并發
當任務數≥ CPU時,多個任務在執行,則每個CPU不可能真正同時進行一個以上的任務,多個任務只能把CPU運行時間劃分成若干個時間段,在一個時間段的任務代碼運行時,其它任務處于掛起狀態。.這種方式我們稱之為并發(Concurrent)。實際上總有一些任務不在執行,因為切換任務的速度相當快,看上去像一起執行而已。
Python中的進程、線程、協程
- 進程(multiprocessing模塊)
進程是系統進行資源分配和調度的獨立單位。我們用流水線來進行解釋進程:假如有9000個零件需要加工,這9000個零件加工就代表9000個任務,即多任務。我們現在有3條流水線,這3條流水線就代表3個進程,每個進程中有1個員工在加工零件。3個進程之間互不影響,可以同時工作。
- 線程(threading模塊)
線程是進程的實體,是CPU調度和分派的基本單位。線程是屬于進程的,線程運行在進程空間內。我們用流水線來進行解釋線程:假如有9000個零件需要加工,這9000個零件加工就代表9000個任務,即多任務。我們現在有1條流水線,這1條流水線就代表1個進程,這1個進程中有3個員工在加工零件。那么3個員工就代表3個線程,線程之間互不影響,可以同時工作。
- 協程(gevent,屬于第三方模塊,需要下載安裝)
協程也是線程,稱微線程,是比線程更小的執行單元,解決的是IO的操作。協程最大的優勢就是協程極高的執行效率。因為子程序切換不是線程切換,而是由程序自身控制,因此,沒有線程切換的開銷,和多線程比,線程數量越多,協程的性能優勢就越明顯。協程也存在著切換,這種切換是由我們用戶來控制的。我們用流水線來進行解釋線程:假如有9000個零件需要加工,這9000個零件加工就代表9000個任務,即多任務。我們現在有1條流水線,這1條流水線就代表1個進程,這1個進程中有1個員工在加工零件。當第1個零件加工的時候,在第1個零件加工等待期間(程序掛起,等待),飛速切換到第2個零件處加工,在第2個零件加工等待期間,飛速切換到第3個零件處加工,待第1個零件加工等待結束前切回第1個零件處,如此往復。協程之間不同時工作。
- 區別
- 優缺點:
線程執行開銷小,但不利于資源的管理和保護;而進程正相反;當我們要完成的任務有耗時任務,屬于IO密集型任務時,我們使用協程來執行任務會節省很多的資源,并且可以極大的利用到系統的資源。
總結
以上是生活随笔為你收集整理的python gevent模块 下载_Python中的多任务,并行,并发,多线程,多进程,协程区别...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java的type转化class_第七章
- 下一篇: python小老鼠编程_成都python