進程、線程和協程的對比
1.定義對比
進程:是系統進行資源分配的基本單位,每啓動一個進程,操作系統都需要爲其分配運行資源
線程:是運行程序中的一個執行分支,是CPU調度的基本單位
協程:在不開闢線程的基礎上完成多任務,也就是在單線程的情況下完成多任務,多個任務按照一定順序交替執行
【注】
進程是操作系統資源分配的基本單位;線程是CPU調度的基本單位
如果你對python感興趣,我這有個學習Python基地,裏面有很多學習資料,感興趣的+Q羣:688244617
2.功能對比
進程:能夠完成多任務,如:一臺電腦運行多個軟件
線程:能夠完成多任務,如:在一個QQ中開啓多個聊天窗口
3.關係對比
線程是依附在進程裏面的,沒有進程就沒有線程
一個進程默認提供一條線程,進程可以創建多個線程
一個線程裏面可以有多個協程
4.區別
進程之間不共享全局變量
線程之間共享全局變量,需要注意資源競爭的問題。解決手段:互斥鎖或線程同步
創建進程的資源開銷要比創建線程的資源開銷大
進程是操作系統資源分配的基本單位,線程是CPU調度的基本單位
線程不能夠獨立執行,必須依存在進程中
多進程開發比單進程多線程開發穩定性要強
多進程、多線程根據CPU核數不一樣可能是並行的,但是協程是在一個線程中執行的,所以是併發的
5.優缺點:
多進程:
優點:可以用多核
缺點:資源開銷大
多線程:
優點:資源開銷小
缺點:不能使用多核
協程:
協程切換任務資源小,效率高