什麼是程序?
程序是計算機中最小的資源分配單位
程序與程序之間資料隔離,執行過程非同步
為什麼會出現程序的概念?
合理利用cpu ,提高使用者體驗
多個程序是可以同時利用多個cpu的,可以實現並行的效果
在主程序中控制子程序的方法?
子程序物件 = process(target,args) 在建立的這一刻根本就沒有通知作業系統
子程序物件.start() 通知操做系統,開啟子程序,非同步非阻塞
子程序物件.terminate() 通知作業系統,結束子程序,非同步非阻塞
子程序物件.is_alive() 檢視程序及是否還活著
子程序物件.join() 阻塞,直到子程序結束
子程序物件.join(timeout = 10) 阻塞最多10s,期間子程序如果結束就結束阻塞,如果沒結束10s之後也結束阻塞
訊號量:
對於鎖 保證一段**同一時刻只能有乙個程序執行
對於訊號量 保證一段**同一時刻只能有n個程序執行
流量控制
10個程序
守護程序
守護程序是乙個子程序守護程序會在主程序**結束之後才結束
為什麼會這樣?
由於主程序必須要**所有的子程序的資源
所以主程序必須在子程序結束之後才能結束
而守護程序就是為了守護主程序存在的
不能守護到主程序結束,就只能退而求其次,守護到**結束了
守護到主程序的**結束,意味著如果有其他子程序沒有結束,守護程序無法繼續守護
解決方案 : 在主程序中加入對其他子程序的join操作,來保證守護程序可以守護所有主程序和子程序的執行
如何設定守護程序
子程序物件.daemon = true 這句話寫在start之前
鎖為什麼要用鎖?
由於多個程序的併發,導致很多資料的操作都在同時進行
所以就有可能產生多個程序同時操作 : 檔案\資料庫 中的資料
導致資料不安全
所以給某一段修改資料的程式加上鎖,就可以控制這段**永遠不會被多個程序同時執行
保證了資料的安全
lock 鎖(互斥鎖)
鎖實際上是把你的某一段程式變成同步的了,降低了程式執行的速度,為了保證資料的安全性
沒有資料安全的效率都是耍流氓
鎖,訊號量,事件機制
鎖 from multiprocessing import lock l lock l.acquire 拿走鑰匙,鎖門,不讓其他人進屋 l.release 釋放鎖。還鑰匙,開門,允許其他人進屋 執行乙個程序的時候不允許其他程序一起執行 舉例 兩個人在銀行共同存錢取錢 from multiproces...
python 43 程序鎖 訊號量 事件
鎖 lock,多個程序中同一時間,只能排序執行程式。一把鑰匙只能進入乙個,歸還鑰匙後面的拿鑰匙進入乙個,類推 訊號 semaphore,多個程序中同一時間,同時被n個程序執行。事件 event,通過乙個訊號控制多個程序,同時執行或阻塞。1 程序鎖,比如搶票會有多個使用者一起搶。沒有鎖程序的情況下 發...
事件 訊號量 臨界區 互斥鎖
handle createevent lpsecurity attributes lpeventattributes,安全屬性 bool bmanualreset,復位方式 bool binitialstate,初始狀態 false建立時為未通知狀態 true建立時為已通知狀態 lpctstr lp...