この記事は最終更新日から1年以上が経過しています。
ディレクトリ構成は前回と同じ構成となります。
コード
#!/usr/bin/env python # -*- coding: utf-8 -*- from configparser import ConfigParser class App(object): _instance = None def __new__(cls): if cls._instance is None: cls._instance = object.__new__(cls) cls._instance.config = ConfigParser() cls._instance.config.read('./sample.ini') return cls._instance def main(): app = App() print('名前は', app.config['cat']['name']) print('名前は', app.config['dog']['name']) app2 = App() print('名前は', app2.config['cat']['name']) print('名前は', app2.config['dog']['name']) print(app is app2) if __name__ == '__main__': main() |
設定ファイル
[dog] name = inu [cat] name = neko |
出力
名前は neko 名前は inu 名前は neko 名前は inu True |
マルチスレッドで動かす場合、これで問題ないか?と意見をもらいまして
マルチスレッドに対応したコード書いてみました。
コード
#!/usr/bin/env python # -*- coding: utf-8 -*- import threading from configparser import ConfigParser class App(object): _instance = None _lock = threading.Lock() def __new__(cls): with cls._lock: if cls._instance is None: cls._instance = object.__new__(cls) cls._instance.config = ConfigParser() cls._instance.config.read('./sample.ini') return cls._instance |
この記事を書いた人
最近書いた記事
- 2017.11.13Boto3を使ったら空文字のままだとDynamoDBにデータが入れられなかった話
- 2017.08.24Pythonでユニットテスト書いてみる
- 2017.06.20Pythonで設定ファイルを読み込んでみる(YAMLファイル)
- 2017.05.22PythonでXMLの要素を削除する