在乙個cpu(一核)的電腦上,
程式的執行是併發執行的,排程的演算法叫時間片輪轉法,也叫輪詢法
在多cpu(多核)的電腦上,乙個cpu跑乙個程式,剛程式執行數量小於核心數時,程式是並行的
併發:看上去一起執行,同時在發生
並行:真正的一起執行,同時在進行
程序的概念:
電腦程式是儲存在磁碟上的可執行二進位制(或者其他型別)檔案
只有當他們被載入到記憶體中,並被作業系統呼叫的時候,他們才會擁有自己的生命週期
程序則表示乙個正在執行的程式
每個程式都擁有自己的位址空間,記憶體,資料棧以及其他用於跟蹤執行的輔助資料
作業系統負責其上的所有程序的執行
作業系統會為這些程序合理的分配執行時間
執行緒的概念:
執行緒被稱作輕量級程序
與程序類似,不過他們是在不同的程序下執行的。並且他們會共享相同的上下文
當其他執行緒執行時,他可以被搶占(中斷),和臨時掛起(睡眠)---------讓步
執行緒的輪詢排程機制類似於程序的輪詢排程。只不過這個排程不是由作業系統來負責的,而是由python直譯器來負責
cpu,程序,執行緒之間的排程關係
cpu——>程序——>執行緒
利用程序和執行緒,實現併發伺服器
執行緒:(gil全域性直譯器鎖:遇到阻塞就切換)
程序:
補充:等待結束:.join()
我們呼叫的子程序或者子執行緒,阻塞等待,直到程序或者執行緒結束
檢視當前程序和當前執行緒 multiprocessing.current_process() / multiprocessing.current_thread()
還是之前的**
終止程序 程序/執行緒.terminate()
強制終止子程序/執行緒,不管程序/執行緒有沒有執行完畢,直接結束
程序/執行緒的標誌 程序print(multiprocessing.process().pid)
執行緒print(threading..current_thread().ident)
檢視程序/執行緒名 例項化的時候輸入:m = multiprocessing.process(target=func,name = '***x')
或者例項化的宣告 m.name = '***x'
檢視程序/執行緒是否還在執行 print(m.is_alive(),m)
守護程序/執行緒 daemon = true p = process(target=func, daemon=true)
把這個程序設定為守護程序隨主線程關閉而關閉
python 的程序 執行緒以及協程 1
通過實現process類來建立 process group none,target none,name none,args kwargs 引數說明 target 表示這個程序例項所呼叫物件 args 表示呼叫物件的位置引數元組 kwargs 表示呼叫物件的關鍵字引數字典 name 為當前程序例項的別...
Linux下程序,執行緒以及程式的區別簡單介紹
linux下程序和執行緒及程式的區別 從狀態來講,程序是動態的概念,用文學語言來說就是系統為開啟某個檔案而分配的所有資源的統稱,程式是靜態的概念,通俗來講進行著的程式叫做程序,執行緒就更具體了,執行緒可以說是程式執行的最小單位。乙個程序可以容納許多個執行緒,可以說是程序是執行緒的容器,執行緒一旦崩潰...
python程序 執行緒
程序 單個程序 from multiprocessing import process import time def task msg print hello,s msg time.sleep 1 if name main p process target task,args world p.st...