執行緒 程序 協程 三者區別

2022-05-04 09:51:09 字數 919 閱讀 5709

1. 程序: 通俗理解乙個執行起來的程式或者軟體叫做程序

1.1 每次啟動乙個程序都需要向作業系統索要執行資源,讓程序中的執行緒去執行對應的**,程序是作業系統分配資源的基本單位

1.2 預設情況下乙個程序只有乙個執行緒,執行緒是依附在程序裡面的, 沒有程序就沒有執行緒, 當在程序裡面還可以建立多個執行緒

1.3 如何理解程序: 把程序想成現實生活中的公司,公司可以給員工提供辦公資源(辦公桌椅,辦公電腦等資源), 真正幹活的是員工,所以員工可以想成執行緒,公司就是程序

2. 程序和執行緒的對比

2.1 程序是作業系統資源分配的基本單位,每啟動乙個程序都需要向作業系統索要執行資源,預設乙個程序只有乙個執行緒,執行緒是依附在程序裡面的

2.2 執行緒是cpu排程的基本單位, 通過執行緒去執行程序中**, 執行緒是執行**的分支

2.3 多程序開發比單程序多執行緒開發穩定性要強,但是多程序開發比多執行緒開發資源開銷要大

2.4 多程序開發某個程序死了不會影響其它程序的執行,但是多執行緒開發該程序死了那麼這些執行緒都要進行銷毀

併發: 任務數大於cpu的核數,多個任務輪流執行,由於cpu切換速度特別快,看起來像是一起執行,其實是假象。

並行:  任務數小於或者等於cpu的核數,那麼多個任務是真正意義一起執行。

3. 程序、執行緒、協程

1.1 先有程序,然後程序可以建立執行緒,執行緒是依附在程序裡面的, 執行緒裡面可以包含多個協程

1.2 程序之間不共享全域性變數,執行緒之間共享全域性變數,但是要注意資源競爭的問題

1.3 多程序開發比單程序多執行緒開發穩定性要強,但是多程序開發比多執行緒開發資源開銷要大

1.4 多執行緒開發執行緒之間執行是無序的,協程之間執行按照一定順序交替執行

1.5 協程以後主要用在網路爬蟲和網路請求,開闢乙個協程大概需要5k空間,開闢乙個執行緒需要512k空間, 開闢乙個程序占用資源最多

原文:

執行緒丶程序丶協程(三)協程

協程,又稱微執行緒,纖程。英文名coroutine。協程是python個中另外一種實現多工的方式,只不過比執行緒更小占用更小執行單元 理解為需要的資源 為啥說它是乙個執行單元,因為它自帶cpu上下文。這樣只要在合適的時機,我們可以把乙個協程 切換到另乙個協程。只要這個過程中儲存或恢復 cpu上下文那...

程序執行緒協程的區別

程序池 乙個程序占用乙個cpu,占用一定的記憶體空間。一般cpu配置都是4核,如果開的程序太多,其他的程式就得等著。什麼情況家使用多程序?cpu是用來計算的。所以在cpu密集運算的情況下,才使用多程序。具體要開幾個程序,根據機器的實際配置和實際生產情況而定。執行緒池 程序裡面才有執行緒,乙個程序裡面...

python 執行緒程序協程(三)

1.在python3.4之前,協程是通過生成器 yield 實現的 def count down n while n 0 yield n n 1 if name main rest count down 5 print next rest print next rest print next res...