多線程和多進程的選擇
前段時間去面試linux軟件,面試官問我多線程和多進程有什麽優缺點,什麽時候使用多進程,多線程,當時就懵逼。其實之前有在網上看到過這個問題和答案,然後略看了一眼,沒有真正去了解。如果現在有人問我這個問題我怎麽回答呢,我想我有我自己的答案了。
首先多進程之間內存是隔離的,所以同步比較簡單,但是進程間的通信比較麻煩,需要通過IPC(管道,命名管道,消息隊列,socket)來通信。進程的創建和銷毀,消耗的資源比較多。
而多線程共享進程的數據,所以數據共享比較簡單,切換比較快,但線程間的同步比較麻煩,需要互斥鎖,信號量等來同步。但也由於沒有內存隔離,一個線程的崩潰會導致整個進程掛掉,線程執行的隨機性可能導致邏輯混亂,甚至可能會導致死鎖的現象。
那麽什麽時候用多進程什麽時候用多線程呢?
多進程:考慮程序穩定性
多線程:需要頻繁創建和銷毀,需要大量運算的程序
多線程和多進程的選擇
相關推薦
python 多進程和子進程1
執行函數 cmd 語言 process imp style nbsp mark ext 多進程的緩沖區 1 #多進程 process.py 2 from multiprocessing import Process,current_process 3 impo
父進程和子進程
計算機 英語 操作系統 僵屍 領域 父進程在計算機領域,父進程(英語:Parent Process)指已創建一個或多個子進程的進程。UNIX在UNIX裏,除了進程0(即PID=0的交換進程,Swapper Process)以外的所有進程都是由其他進程使用系統調用fork創建的,這裏調用fo
17-7-20-electron中主進程和渲染進程區別與通信
pcr 識別 pac 多個 coo main 完成 不同的 global 老規矩,先吐槽,再記錄。 今天被上司教育了將近一個小時。因為之前自動更新的模塊,我認為已經完成了,但是還有一些細節沒有完善好,就一直一直的被教育~ 事情全部做完,提交以後關閉issue! elec
僵屍進程和孤兒進程-(轉自Anker's Blog)
進程表 信號 wait 例如 rmi 答案 class 正常 dia 2、基本概念 我們知道在unix/linux中,正常情況下,子進程是通過父進程創建的,子進程在創建新的進程。子進程的結束和父進程的運行是一個異步過程,即父進程永遠無法預測子進程 到底什麽時候結束。 當
Linux Guard Service - 前臺進程和後臺進程切換
command pthreads 2.6 其中 子進程 查看進程 前臺 gpo interrupt 把一個正在執行的程序放入後臺 [root@localhost 01]# Ctrl+Z 此使程序被移動到後臺,但不能繼續輸出(處於暫停態) [root@localhost 01
nignx的master進程和worker進程的作用
啟用 套接字 反向 過濾 PE 會有 有一個 信息 回滾 ngnix進程啟動啟動後會有一個master進程和多個worker進程。 master進程的主要作用: 1.讀取並驗證配置信息; 2.創建,綁定及關閉套接字; 3.啟動,終止worker進程以及維護worker進程的
Linux 查看進程和刪除進程
表示 init wid borde -a 自動補全 當前 例如 輸入 基本命令講解 在 LINUX 命令平臺輸入 1-2 個字符後按 Tab 鍵會自動補全後面的部分(前提是要有這個東西,例如在裝了 tomcat 的前提下, 輸入 tomcat 的 to 按 tab)。 ps
僵屍進程和孤兒進程
運行 html 周期 inux 負責 cnblogs 模糊 https 兩個 Linux-孤兒進程與僵屍進程 1、前言 之前在看《unix環境高級編程》第八章進程時候,提到孤兒進程和僵屍進程,一直對這兩個概念比較模糊。今天被人問到什麽是孤兒進程和僵屍進程,會帶來什麽
Swoole 理解manager進程和worker進程的啟動順序,以及演示如何停止或者重啟服務端。
urn option die span spa actor reactor load ont 測試的代碼主要功能:開啟一個tcp服務器。然後設置了管理進程和工作進程start的回調進行更名。設置了pid_file保存了服務端啟動的mast進程。 <?php //創
Linux內核學習筆記(2)-- 父進程和子進程及它們的訪問方法
endif eric 有一個 generic inter 做的 int inf ati Linux系統中,進程之間有一個明顯的繼承關系,所有進程都是 PID 為1的 init 進程的後代。內核在系統啟動的最後階段啟動 init 進程。該進程讀取系統的初始化腳本(init
Linux中如何查看進程和控制進程
如何 數據丟失 內存 star 休眠 ask 占用 ESS 直接 查看進程的命令如下:ps命令——查看靜態的進程統計信息(一般結合選項使用 ps aux 或 ps -elf 命令)建議使用 ps -elf 查詢,輸出的信息更詳細些,包括 PPID (
多線程和多進程的選擇
linux多進程多線程第一次寫博客。。。最近發現很多技術的東西看了很快又忘了,希望通過自己的理解寫出來,我想這是一種方法吧。 前段時間去面試linux軟件,面試官問我多線程和多進程有什麽優缺點,什麽時候使用多進程,多線程,當時就懵逼。其實之前有在網上看到過這個問題和答案,然後略看了一眼,沒有真正去了解。如果現
Python多線程和多進程誰更快?
-s roc finally scan lis fun import 行鎖 sys python多進程和多線程誰更快 python3.6 threading和multiprocessing 四核+三星250G-850-SSD 自從用多進程和多線程進行編程,一致沒搞懂到
多線程和多進程之間的區別
true 需求 改善 建立 static變量 需要 CP 創建 應用程序 1)需要頻繁創建銷毀的優先用線程 這種原則最常見的應用就是Web服務器了,來一個連接建立一個線程,斷了就銷毀線程,要是用進程,創建和銷毀的代價是很難承受的 2)需要進行大量計算的優先使用線程
python多進程和多線程
done 創建 組成 需要 getpid ret nat set write 多任務才有多進程和線程: 線程是最小的執行單元,而進程由至少一個線程組成。如何調度進程和線程,完全由操作系統決定,程序自己不能決定什麽時候執行,執行多長時間。 多進程和多線程的程序涉及到同步、數據
Python學習記錄-多進程和多線程
python 線程 進程 Python學習記錄-多進程和多線程 [TOC] 1. 進程和線程 進程 狹義定義:進程是正在運行的程序的實例(an instance of a computer program that is being executed)。廣義定義:進程是一個具有一定獨立功能的程序關
python socket多線程和多進程
socket多線程 socket多進程 並發socket 在socket中,如果直接創建的話,是只能接受一個用戶的請求需要實現socketserver中的handle方法,可以實現多進程並發訪問 SocketServer內部使用 IO多路復用 以及 “多線程” 和 “多進程” ,從而實現並發處理
Android程序員必須掌握的知識點-多進程和多線程
線程安全 適用於 傳遞 觸摸 播放音樂 RF tro ins 如果 當某個應用組件啟動且該應用沒有運行其他任何組件時,Android 系統會使用單個執行線程為應用啟動新的 Linux 進程。默認情況下,同一應用的所有組件在相同的進程和線程(稱為“主”線程)中運行。 如果某個
搞定python多線程和多進程
觸發 不一定 並不會 守護線程 執行 comm mes 權限 pipe 1.1 線程 1.1.1 什麽是線程 線程是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以並發多個線程,每條線程
python多線程和多進程(一)
5.0 16px time img 繼承 total 線程鎖 nco 第一次 一、多線程 Python的標準庫提供了兩個模塊:_thread和threading,_thread是低級模塊,threading是高級模塊,對_thread進行了封裝。絕大多數情況下,只需要使用