python下的執行緒 程序,以及如何實現併發伺服器

2021-09-25 06:01:48 字數 2193 閱讀 6424

在乙個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...