91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何使用信號量動態更新配置文件

發布時間:2021-03-26 11:11:33 來源:億速云 閱讀:208 作者:小新 欄目:開發技術

這篇文章主要介紹python如何使用信號量動態更新配置文件,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一種小技巧,可以讓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

python如何使用信號量動態更新配置文件

修改配置文件 name為Recar

發起HUP信號

python如何使用信號量動態更新配置文件

切到捕獲的信號量看到重新更新了配置文件

python如何使用信號量動態更新配置文件

這里我開始還有的 from config import name

然后捕獲信號量再重新導入,也就是再執行一下 from config import name

這樣是不行的,如果想要重新導入需要 reload(模塊) 但是這里reload不支持 from的形式

我改為 import config 然后在 自定義的信號量處理函數中 reload(config) 來實現重新載入模塊。

還是推薦使用 ConfigParser 來獲取配置文件好一些。

補充知識:python3-ConfigParser讓配置文件生效

INI文件由節、鍵、值組成。格式如下:

例如:

[section]
name=value
name:value

注解使用分號表示(;)。在分號后面的文字,直到該行結尾都全部為注解。

configparser模塊含有configparser類,主要包含三個模塊:RawConfigParser(),ConfigParser()、SafeConfigParse()這三個方法(三選一),創建一個對象使用對象的方法對配置文件進行增刪改查操作.

from configparser import ConfigParser
 
 if __name__ == "__main__": 
 
#寫入數據到test.ini文件
 config=ConfigParser()
 config.add_section('login')
 config.set('login','name','test')
 config.set('login','paw','test')
 
 with open("test.ini",'w+') as f :
  config.write(f)
 
 
 with open("test.ini",'r') as f_read:
  config.read_file(f_read)
  print(config.get('login','name'))
  config.read(f_read)
  #獲取section
  print(config.sections())
  #獲取key
  print(config.get('login','name'))
  #獲取value
  print(config.get('login','paw'))
  #獲取某個section下的key,value
  print(config.options('login'))
  #判斷section是否存在,存在返回True,不存在返回False
  print(config.has_section('login'))
  #方法判斷section下,某個鍵是否存在,存在返回True,不存在返回False
  print(config.has_option('login','name1'))

刪除

remove_section()方法刪除某個section,remove_option()方法刪除某個section下的鍵 config.remove_section('login','paw')

注:要先read到內存

config.read(file)

實際刪除的為內存中的,文件中的section的鍵不會減少

以上是“python如何使用信號量動態更新配置文件”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

皮山县| 元氏县| 兰溪市| 平安县| 施甸县| 吴川市| 龙江县| 尖扎县| 柘城县| 奇台县| 防城港市| 阳山县| 扬中市| 阜平县| 莱芜市| 峨眉山市| 左云县| 浠水县| 道孚县| 延长县| 东乡| 读书| 乳山市| 祁门县| 洪泽县| 蓬莱市| 汾阳市| 武清区| 西青区| 香格里拉县| 黄梅县| 双城市| 承德县| 台江县| 罗源县| 延边| 铅山县| 英超| 闵行区| 永胜县| 平顺县|