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