一種小技巧,可以讓python捕獲訊號量hup 然後當使用 kill 發起hup訊號量的時候 捕獲到進行處理,可以處理為重新讀取配置檔案並重新賦值,這樣不需要重啟服務也可以讓程式重新讀取配置檔案的內容
捕獲訊號量
import signal
import configparser
def get_config():
conf = configparser.configparser()
conf.read("config.cfg")
name = conf.get("test", "name")
print(name)
def update_config(signum,frame):
print("update config")
get_config()
def ctrl_c(signum,frame):
print("input ctrl c")
exit(1)
# 捕獲hup
signal.signal(signal.sighup, update_config)
# 捕獲ctrl+c
signal.signal(signal.sigint, ctrl_c)
print("test signal")
get_config()
while true:
pass
配置檔案
$ cat config.cfg
[test]
# name = "recar"
name = "@@@"
執行程式 python
修改配置檔案 name為recar
發起hup訊號
切到捕獲的訊號量看到重新更新了配置檔案
這裡我開始還有的from config import name
然後捕獲訊號量再重新匯入,也就是再執行一下from config import name
這樣是不行的,如果想要重新匯入需要 reload(模組) 但是這裡reload不支援 from的形式
我改為import config
然後在 自定義的訊號量處理函式中reload(config)
來實現重新載入模組。
還是推薦使用configparser
來獲取配置檔案好一些。
python訊號量 Python訊號量
python訊號量教程 訊號量是由作業系統管理的一種抽象資料型別,用於在多執行緒中同步對共享資源的使用。本質上說,訊號量是乙個內部資料,用於標明當前的共享資源可以有多少併發讀取。也可以簡單的理解為,訊號量是多把鎖,同時允許多個執行緒來更改資料,而 python訊號量與互斥鎖的關係 訊號量的乙個特殊用...
python使用訊號量動態更新配置檔案的操作
一種小技巧,可以讓python捕獲訊號量hup 然後當使用 kill 發起hup訊號量的時候 捕獲到進行處理,可以處理為重新讀取配置檔案並重新賦值,這樣不需要重啟服務也可以讓程式重新讀取配置檔案的內容 捕獲訊號量 import signal import configparser def get c...
訊號量 二值訊號量
訊號量 二值訊號量 訊號量是作業系統的重要部分,訊號量一般用來進行資源管理和任務同步。freertos中訊號量分為二值訊號量 互斥訊號量 計數訊號量和遞迴互斥訊號量,應用場景各不同。二值訊號量通常用於互斥訪問或同步,二值訊號量和互斥訊號量非常相似,但互斥訊號量有優先順序,二值訊號量沒有。因此二值訊號...