線程、進程、攜程理解


並發與並行

並發

擁有處理多個任務的能力。對於單核CPU來說,只能處理並發

並行

擁有同時處理多個任務的能力,對於多核CPU,即可以並發和並行

同步與異步

同步和異步強調的是消息通信機制

同步

如果一個人這樣處理:先燒水,燒水的過程中啥也不干,就一直等着,等水開后,再把茶葉放到開水壺中。這種處理方法就是同步處理
也就是說,一個任務需要多步執行,如果上一步沒有執行結束,那么下一步任務就一直等待。等到上一步任務完成后(一般會有結果),下一步的任務才繼續執行
在計算機中:如果一段代碼A的執行中需要調用另一端代碼B,那么代碼A就會一直等待,直到代碼B執行結束后才繼續向下執行

異步

如果這樣做:用一個會報警的水壺。吧涼水放到水壺里,點着火就去干其他事情了。等水壺的報警器報警的時候,他再過去吧茶葉放到開水壺里。這就是異步操作。
此人改進過程:用了一個會報警的水壺,他把涼水放到水壺里,點着火后就去干其他事了。同事交代他的仆人等水開了就把茶葉放到開水壺里,等水壺的報警器報警的時候,他的仆人就去吧茶葉放到開水壺里。
仆人就相當於計算機異步操作中的回調函數。水壺報警相當於調用回調函數

阻塞和非阻塞

阻塞和非阻塞強調的是程序在等待調用結果(消息,返回值)時的狀態

阻塞

程序在等待的過程中,線程是掛起狀態。就像剛才的例子中,這個燒水的人,在等待水開的過程中在睡覺。而同步等待的過程中,線程是激活狀態

非阻塞

線程、進程、攜程

進程是操作系統最小的資源分配單位。線程是操作系統最小的執行單元。

進程(我用的是 multiprocessing 模塊)

進程是運行着的程序以及其占用的系統資源的總和。每個進程都有獨立的內存空間。

創建一個進程(Process)

子進程阻塞進程(進程對象的join方法)

守護進程

隊列(Queue、JoinableQueue)【生產/消防 模型】、鎖、信號量、進程池、事件、管道

線程

協程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM