python單例模式淺談
阿新 • • 發佈:2018-12-11
單例模式
單例模式(Singleton Pattern)是一種常用的軟體設計模式,該模式的主要目的是確保某一個類只有一個例項存在。當你希望在整個系統中,某個類只能出現一個例項時,單例物件就能派上用場。
比如,某個伺服器程式的配置資訊存放在一個檔案中,客戶端通過一個 AppConfig 的類來讀取配置檔案的資訊。如果在程式執行期間,有很多地方都需要使用配置檔案的內容,也就是說,很多地方都需要建立 AppConfig 物件的例項,這就導致系統中存在多個 AppConfig 的例項物件,而這樣會嚴重浪費記憶體資源,尤其是在配置檔案內容很多的情況下。事實上,類似 AppConfig 這樣的類,我們希望在程式執行期間只存在一個例項物件。
在 Python 中,我們可以用多種方法來實現單例模式。
在python中推薦使用基於__new__方法實現:
#! /usr/bin/env python # -*- coding:utf-8 -*- """ __title__ = '' __author__ = 'BY' __mtime__ = '2018/12/11' """ import threading class Name(object): def __new__(cls, *args, **kwargs): if not hasattr(cls, "_instance"): cls._instance = super().__new__(cls) #super()方法是呼叫其父類,即object return cls._instance def __init__(self, name="name"): self.name = name def get_name(self): print(self.name) def task(name): print(name) obj = Name(name=name) print(obj) print(obj.get_name()) if __name__ == "__main__": for i in range( 10 ): t = threading.Thread( target=task(i), args=[i, ]) t.start()