网络概念小结
什么是進(jìn)程?
就是為了形容執(zhí)行中的程序的一種稱呼
它是操作系統(tǒng)中資源分配的最小單位
進(jìn)程之間是數(shù)據(jù)隔離的,占用操作系統(tǒng)資源相對(duì)多
獨(dú)立存在的
談?wù)剬?duì)并發(fā)的理解?
同時(shí)有多個(gè)任務(wù)需要執(zhí)行但是資源有限
所以我們會(huì)利用一些手段:多進(jìn)程\多線程\協(xié)程來(lái)完成任務(wù)
來(lái)提高用戶體驗(yàn),達(dá)到多個(gè)任務(wù)在同一個(gè)時(shí)間段內(nèi)同時(shí)執(zhí)行的效果
什么是線程?
輕量級(jí)進(jìn)程,直接被CPu調(diào)用,不能獨(dú)立存在的輕量級(jí)進(jìn)程
同一進(jìn)程中的多個(gè)線程之間數(shù)據(jù)共享
你對(duì)GIL的理解?
全局解釋器鎖,是用來(lái)鎖線程的,Cpython解釋器提供的
導(dǎo)致了同一時(shí)刻只能有一個(gè)線程訪問(wèn)Cpu
是一個(gè)歷史遺留問(wèn)題
你對(duì)異步非阻塞的理解?
異步:一個(gè)任務(wù)的執(zhí)行不需要等待另個(gè)任務(wù)的結(jié)束
非阻塞: 沒(méi)有阻塞
設(shè)置非阻塞(socket對(duì)象調(diào)用setblocking(False))
什么是協(xié)程?
協(xié)程是用戶級(jí)的,對(duì)操作系統(tǒng)不可見(jiàn)
使用戶為了提高一條線程對(duì)CPU的利用率才出現(xiàn)的概念
協(xié)程能實(shí)現(xiàn)一條線程上的多個(gè)任務(wù)相互切換
為了提高效率,用戶可以控制協(xié)程在一個(gè)任務(wù)中遇到IO就切換另一個(gè)任務(wù)
協(xié)程和線程比起來(lái)?
協(xié)程不存在數(shù)據(jù)不安全問(wèn)題
協(xié)程不能處分利用多核
但是線程在Cpython解釋器下實(shí)際上也不能利用多核
所以相對(duì)來(lái)說(shuō),協(xié)程實(shí)際上在python中是更好的工具
什么是IO多路復(fù)用?
操作系統(tǒng)提供的代理,監(jiān)聽(tīng)網(wǎng)絡(luò)對(duì)象的IO操作
常見(jiàn)的IO多路復(fù)用機(jī)制?
select:輪詢的方式獲取每個(gè)對(duì)象的狀態(tài)
poll:底層數(shù)據(jù)結(jié)構(gòu)與select不同,進(jìn)行了優(yōu)化,能夠儲(chǔ)存更多的對(duì)象,也是輪詢的方式
epoll:不采用輪詢的方式來(lái)獲取每個(gè)對(duì)象的狀態(tài),而是采用回調(diào)函數(shù)的方式,
所以wait for data 階段 一收到數(shù)據(jù)就可以立即通知應(yīng)用程序
提高了效率,也減輕了操作系統(tǒng)的負(fù)擔(dān)
就是為了形容執(zhí)行中的程序的一種稱呼
它是操作系統(tǒng)中資源分配的最小單位
進(jìn)程之間是數(shù)據(jù)隔離的,占用操作系統(tǒng)資源相對(duì)多
獨(dú)立存在的
談?wù)剬?duì)并發(fā)的理解?
同時(shí)有多個(gè)任務(wù)需要執(zhí)行但是資源有限
所以我們會(huì)利用一些手段:多進(jìn)程\多線程\協(xié)程來(lái)完成任務(wù)
來(lái)提高用戶體驗(yàn),達(dá)到多個(gè)任務(wù)在同一個(gè)時(shí)間段內(nèi)同時(shí)執(zhí)行的效果
什么是線程?
輕量級(jí)進(jìn)程,直接被CPu調(diào)用,不能獨(dú)立存在的輕量級(jí)進(jìn)程
同一進(jìn)程中的多個(gè)線程之間數(shù)據(jù)共享
你對(duì)GIL的理解?
全局解釋器鎖,是用來(lái)鎖線程的,Cpython解釋器提供的
導(dǎo)致了同一時(shí)刻只能有一個(gè)線程訪問(wèn)Cpu
是一個(gè)歷史遺留問(wèn)題
你對(duì)異步非阻塞的理解?
異步:一個(gè)任務(wù)的執(zhí)行不需要等待另個(gè)任務(wù)的結(jié)束
非阻塞: 沒(méi)有阻塞
設(shè)置非阻塞(socket對(duì)象調(diào)用setblocking(False))
什么是協(xié)程?
協(xié)程是用戶級(jí)的,對(duì)操作系統(tǒng)不可見(jiàn)
使用戶為了提高一條線程對(duì)CPU的利用率才出現(xiàn)的概念
協(xié)程能實(shí)現(xiàn)一條線程上的多個(gè)任務(wù)相互切換
為了提高效率,用戶可以控制協(xié)程在一個(gè)任務(wù)中遇到IO就切換另一個(gè)任務(wù)
協(xié)程和線程比起來(lái)?
協(xié)程不存在數(shù)據(jù)不安全問(wèn)題
協(xié)程不能處分利用多核
但是線程在Cpython解釋器下實(shí)際上也不能利用多核
所以相對(duì)來(lái)說(shuō),協(xié)程實(shí)際上在python中是更好的工具
什么是IO多路復(fù)用?
操作系統(tǒng)提供的代理,監(jiān)聽(tīng)網(wǎng)絡(luò)對(duì)象的IO操作
常見(jiàn)的IO多路復(fù)用機(jī)制?
select:輪詢的方式獲取每個(gè)對(duì)象的狀態(tài)
poll:底層數(shù)據(jù)結(jié)構(gòu)與select不同,進(jìn)行了優(yōu)化,能夠儲(chǔ)存更多的對(duì)象,也是輪詢的方式
epoll:不采用輪詢的方式來(lái)獲取每個(gè)對(duì)象的狀態(tài),而是采用回調(diào)函數(shù)的方式,
所以wait for data 階段 一收到數(shù)據(jù)就可以立即通知應(yīng)用程序
提高了效率,也減輕了操作系統(tǒng)的負(fù)擔(dān)
轉(zhuǎn)載于:https://www.cnblogs.com/systemsystem/p/10119658.html
總結(jié)
- 上一篇: undo系统参数详解
- 下一篇: docker开机启动和docker-co