【程序】:
程序可以理解為個人的思維整合所設(shè)計和編寫的一種有特殊意義的文本作品,其包含一些有特殊含義的詞匯、符號、數(shù)據(jù)及短語縮寫,俗稱代碼。程序本身是一種靜態(tài)的文本作品,但通過特殊的環(huán)境,能讓其產(chǎn)生動態(tài)的邏輯和具備運算能力。
【進程】:
1. 進程的介紹
在Python程序中,想要實現(xiàn)多任務(wù)可以使用進程來完成,進程是實現(xiàn)多任務(wù)的一種方式。
2. 進程的概念
一個正在運行的程序或者軟件就是一個進程,它是操作系統(tǒng)進行資源分配的基本單位,也就是說每啟動一個進程,操作系統(tǒng)都會給其分配一定的運行資源(內(nèi)存資源)保證進程的運行。
比如:現(xiàn)實生活中的公司可以理解成是一個進程,公司提供辦公資源(電腦、辦公桌椅等),真正干活的是員工,員工可以理解成線程。
注意:
一個程序運行后至少有一個進程,一個進程默認(rèn)有一個線程,進程里面可以創(chuàng)建多個線程,線程是依附在進程里面的,沒有進程就沒有線程。
3. 進程的作用
單進程效果圖:
多進程效果圖:
說明:
多進程可以完成多任務(wù),每個進程就好比一家獨立的公司,每個公司都各自在運營,每個進程也各自在運行,執(zhí)行各自的任務(wù)。
【線程】:
1. 線程的介紹
在Python中,想要實現(xiàn)多任務(wù)除了使用進程,還可以使用線程來完成,線程是實現(xiàn)多任務(wù)的另外一種方式。
2. 線程的概念
線程是進程中執(zhí)行代碼的一個分支,每個執(zhí)行分支(線程)要想工作執(zhí)行代碼需要cpu進行調(diào)度 ,也就是說線程是cpu調(diào)度的基本單位,每個進程至少都有一個線程,而這個線程就是我們通常說的主線程。
3. 線程的作用
多線程可以完成多任務(wù)
多線程效果圖:
【并行和并發(fā)】:
并發(fā):指的是任務(wù)數(shù)多于cpu核數(shù),通過操作系統(tǒng)的各種任務(wù)調(diào)度算法,實現(xiàn)用多個任務(wù)“一起”執(zhí)行(實際上總有一些任務(wù)不在執(zhí)行,因為切換任務(wù)的速度相當(dāng)快,看上去一起執(zhí)行而已)。
真正的并行執(zhí)行多任務(wù)只能在多核CPU上實現(xiàn),但是,由于任務(wù)數(shù)量遠(yuǎn)遠(yuǎn)多于CPU的多核數(shù)量,所以,操作系統(tǒng)也會自動把很多任務(wù)輪流調(diào)度到每個核心上執(zhí)行。
并行:指的是任務(wù)數(shù)小于等于cpu核數(shù),即任務(wù)真的是一起執(zhí)行的
【高并發(fā)】:
相對于分布式來講,高并發(fā)在解決的問題上會集中一些,其反應(yīng)的是同時有多少量:比如在線直播服務(wù),同時有上萬人觀看。
高并發(fā)可以通過分布式技術(shù)去解決,將并發(fā)流量分到不同的物理服務(wù)器上。但除此之外,還可以有很多其他優(yōu)化手段:比如使用緩存系統(tǒng),將所有的,靜態(tài)內(nèi)容放到CDN等;還可以使用多線程技術(shù)將一臺服務(wù)器的服務(wù)能力最大化。