python的并行、并發(fā):
并發(fā):在一個(gè)時(shí)間段,處理多個(gè)任務(wù),單核也可以并發(fā)(CPU分時(shí)間片);
并行:在同一個(gè)時(shí)刻,處理多個(gè)任務(wù),必須多核才能并行;
Python實(shí)現(xiàn)并發(fā)的手段:
1、操作系統(tǒng)提供:進(jìn)程、線程;
2、編程語言提供:協(xié)程:用戶空間的調(diào)度(py3);
題外話:
現(xiàn)在的操作系統(tǒng),進(jìn)程和線程的區(qū)別越來越小,因?yàn)檫M(jìn)程越來越輕了;實(shí)際上,Linux的線程是通過進(jìn)程實(shí)現(xiàn)的;
Python的進(jìn)程和線程的區(qū)別:
Python每個(gè)進(jìn)程都會(huì)啟動(dòng)一個(gè)解釋器;
Python每個(gè)線程(一個(gè)進(jìn)程下面的)共享一個(gè)解釋器;
ps:Python沒有提供主動(dòng)停止線程的方法的;只能等線程處理完畢,或者主線程結(jié)束;所以在線程邏輯里面一定要寫退出邏輯;
python的同步、異步
同步、異步:
發(fā)生在函數(shù)調(diào)用的時(shí)候,是否得到直接最終結(jié)果;
得到直接最終結(jié)果的是:同步調(diào)用;
不得到直接最終結(jié)果的是:異步調(diào)用;
阻塞、非阻塞:
發(fā)生在函數(shù)調(diào)用的時(shí)候,是否立刻返回;
立刻返回:非阻塞調(diào)用;
不立刻返回:阻塞調(diào)用;
ps:同步、異步 與?阻塞、非阻塞 在概念上是不相關(guān)的;
同步、異步:關(guān)注的是結(jié)果;
阻塞、非阻塞:關(guān)注的是是否等待;
ps:異步非阻塞是最好的性能咯;