訊號量 事件 鎖 守護程序

2022-05-25 13:18:09 字數 1172 閱讀 7677

什麼是程序?

程序是計算機中最小的資源分配單位

程序與程序之間資料隔離,執行過程非同步

為什麼會出現程序的概念?

合理利用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...