進(jìn)程、線程、協(xié)程對(duì)比
請(qǐng)仔細(xì)理解如下的通俗描述
有一個(gè)老板想要開個(gè)工廠進(jìn)行生產(chǎn)某件商品(例如剪子)
他需要花一些財(cái)力物力制作一條生產(chǎn)線,這個(gè)生產(chǎn)線上有很多的器件以及材料這些所有的 為了能夠生產(chǎn)剪子而準(zhǔn)備的資源稱之為:進(jìn)程
只有生產(chǎn)線是不能夠進(jìn)行生產(chǎn)的赏壹,所以老板的找個(gè)工人來進(jìn)行生產(chǎn),這個(gè)工人能夠利用這些材料最終一步步的將剪子做出來衔沼,這個(gè)來做事情的工人稱之為:線程
這個(gè)老板為了提高生產(chǎn)率蝌借,想到3種辦法:
在這條生產(chǎn)線上多招些工人,一起來做剪子指蚁,這樣效率是成倍増長(zhǎng)菩佑,即單進(jìn)程 多線程方式
老板發(fā)現(xiàn)這條生產(chǎn)線上的工人不是越多越好,因?yàn)橐粭l生產(chǎn)線的資源以及材料畢竟有限凝化,所以老板又花了些財(cái)力物力購(gòu)置了另外一條生產(chǎn)線稍坯,然后再招些工人這樣效率又再一步提高了,即多進(jìn)程 多線程方式
老板發(fā)現(xiàn)搓劫,現(xiàn)在已經(jīng)有了很多條生產(chǎn)線瞧哟,并且每條生產(chǎn)線上已經(jīng)有很多工人了(即程序是多進(jìn)程的袜蚕,每個(gè)進(jìn)程中又有多個(gè)線程),為了再次提高效率绢涡,老板想了個(gè)損招牲剃,規(guī)定:如果某個(gè)員工在上班時(shí)臨時(shí)沒事或者再等待某些條件(比如等待另一個(gè)工人生產(chǎn)完謀道工序 之后他才能再次工作) ,那么這個(gè)員工就利用這個(gè)時(shí)間去做其它的事情雄可,那么也就是說:如果一個(gè)線程等待某些條件凿傅,可以充分利用這個(gè)時(shí)間去做其它事情,其實(shí)這就是:協(xié)程方式
簡(jiǎn)單總結(jié)
進(jìn)程是資源分配的單位
線程是操作系統(tǒng)調(diào)度的單位
進(jìn)程切換需要的資源很最大数苫,效率很低
線程切換需要的資源一般聪舒,效率一般(當(dāng)然了在不考慮GIL的情況下)
協(xié)程切換任務(wù)資源很小,效率高
多進(jìn)程虐急、多線程根據(jù)cpu核數(shù)不一樣可能是并行的箱残,但是協(xié)程是在一個(gè)線程中 所以是并發(fā)