當前位置:
首頁 > 最新 > 進程與線程的區別

進程與線程的區別

1、資源的分配。

多進程中的子進程與主進程所擁有的資源是一致的,不多也不少,子進程之間不可以互相通信,也就不能修改全局變數,可以保護,管理資源,因此運行多進程時佔用內存較高,運行效率高。

多線程中的子線程與主線程共享一個資源,子進程之間可以互相通信,可以修改全局變數,不利於資源的管理和保護,運行多線程時佔用內存較低,並發性高。

2、查看方式不同。

線程:threading.enumerate() >>> 查看線程數量

進程:os.getpid()>>>查看進程序列號

os.getppid()>>>查看父進程序列號(get parent process id)

ps -aux >>>linux中查看全部進程

kill 進程序列號 >>>殺死指定進程

kill -9 進程序列號 >>>強制殺死進程

3,限制關係不同。

線程:主線程(整個python程序)將在所有非守護線程退出後才退出,也就是說要關閉主線程時,主線程會等待子線程執行完畢之後關閉,因此線程不穩定。

進程:主進程(整個python程序)可以隨時退出,不會影響子進程的運行,因為子進程擁有與主進程相同的資源與程序,因此進程比較穩定。

4、創建方法不同。

線程:使用threading模塊

t = threading.Thread(target=test,args=(n,),kwargs={"name":"陳"})

t.start()

進程:使用multiprocessing模塊

p = multiprocessing.Process(target=test,args=(n,),kwargs={"name":" 陳"})

p.start()

5、運行場景不同:

線程:類似與一個程序中實現多個功能。

進程:類似與電腦上運行多個程序。

6、定義不同:

進程:系統進行資源分配和調度的基本單位。

線程:是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位,線程用已經被分配的資源單位去執行任務。線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。

7、通信機制:

進程之間,相互獨立,進程的通信機制使用消息隊列,套接字等,而線程由於共享全局變數,通信機制很方便。

8、最後使用場景:

需要更穩定安全時,適合選擇進程,需要速度,效率時,選擇線程更好。沒有進程便沒有線程,進程拿到資源合理分配給線程使用。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 PythonKnowledge 的精彩文章:

SSH 登陸伺服器

TAG:PythonKnowledge |