亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python單例模式實例分析

 更新時間:2015年01月14日 10:21:22   投稿:shichen2014  
這篇文章主要介紹了Python單例模式,以實例形式分析了Python單例模式的具體使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Python單例模式的使用方法。分享給大家供大家參考。具體如下:

方法一

復制代碼 代碼如下:
import threading 
 
class Singleton(object): 
    __instance = None 
 
    __lock = threading.Lock()   # used to synchronize code 
 
    def __init__(self): 
        "disable the __init__ method" 
 
    @staticmethod 
    def getInstance(): 
        if not Singleton.__instance: 
            Singleton.__lock.acquire() 
            if not Singleton.__instance: 
                Singleton.__instance = object.__new__(Singleton) 
                object.__init__(Singleton.__instance) 
            Singleton.__lock.release() 
        return Singleton.__instance

1.禁用__init__方法,不能直接創(chuàng)建對象。

2.__instance,單例對象私有化。

3.@staticmethod,靜態(tài)方法,通過類名直接調用。

4.__lock,代碼鎖。

5.繼承object類,通過調用object的__new__方法創(chuàng)建單例對象,然后調用object的__init__方法完整初始化。

6.雙重檢查加鎖,既可實現線程安全,又使性能不受很大影響。

方法二:使用decorator

復制代碼 代碼如下:
#encoding=utf-8 
def singleton(cls): 
    instances = {} 
    def getInstance(): 
        if cls not in instances: 
            instances[cls] = cls() 
        return instances[cls] 
    return getInstance 
 
@singleton 
class SingletonClass: 
    pass 
 
if __name__ == '__main__': 
    s = SingletonClass() 
    s2 = SingletonClass() 
    print s 
    print s2

也應該加上線程安全

復制代碼 代碼如下:
import threading 
 
class Sing(object): 
    def __init__(): 
        "disable the __init__ method" 
 
    __inst = None # make it so-called private 
 
    __lock = threading.Lock() # used to synchronize code 
 
    @staticmethod 
    def getInst(): 
        Sing.__lock.acquire() 
        if not Sing.__inst: 
            Sing.__inst = object.__new__(Sing) 
            object.__init__(Sing.__inst) 
        Sing.__lock.release() 
        return Sing.__inst

希望本文所述對大家的Python程序設計有所幫助。

相關文章

  • Python 在函數上添加包裝器

    Python 在函數上添加包裝器

    這篇文章主要介紹了Python 如何在函數上添加包裝器,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • Python光學仿真wxpython透鏡演示系統(tǒng)框架

    Python光學仿真wxpython透鏡演示系統(tǒng)框架

    這篇文章主要為大家介紹了Python光學仿真UI界面的wxpython透鏡演示系統(tǒng)框架基本講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python標準庫datetime?date模塊的詳細介紹

    Python標準庫datetime?date模塊的詳細介紹

    這篇文章主要介紹了Python標準庫datetime?date模塊的詳細介紹,datetime是Python提供的操作日期和時間的標準庫,主要有datetime.date模塊、datetime.time模塊及datetime.datetime模塊
    2022-07-07
  • Python標準庫之urllib和urllib3的使用及說明

    Python標準庫之urllib和urllib3的使用及說明

    這篇文章主要介紹了Python標準庫之urllib和urllib3使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python獲取任意xml節(jié)點值的方法

    Python獲取任意xml節(jié)點值的方法

    這篇文章主要介紹了Python獲取任意xml節(jié)點值的方法,涉及Python操作XML節(jié)點的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • Python數據結構與算法之圖的廣度優(yōu)先與深度優(yōu)先搜索算法示例

    Python數據結構與算法之圖的廣度優(yōu)先與深度優(yōu)先搜索算法示例

    這篇文章主要介紹了Python數據結構與算法之圖的廣度優(yōu)先與深度優(yōu)先搜索算法,結合實例形式分析了圖的廣度優(yōu)先與深度優(yōu)先搜索算法原理與相關實現技巧,需要的朋友可以參考下
    2017-12-12
  • python的dataframe和matrix的互換方法

    python的dataframe和matrix的互換方法

    下面小編就為大家分享一篇python的dataframe和matrix的互換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python統(tǒng)計cpu利用率的方法

    python統(tǒng)計cpu利用率的方法

    這篇文章主要介紹了python統(tǒng)計cpu利用率的方法,涉及Python中win32pdh模塊的使用技巧,需要的朋友可以參考下
    2015-06-06
  • Windows安裝Anaconda并且配置國內鏡像的詳細教程

    Windows安裝Anaconda并且配置國內鏡像的詳細教程

    我們在學習 Python 的時候需要不同的 Python 版本,關系到電腦環(huán)境變量配置換來換去很是麻煩,所以這個時候我們需要一個虛擬的 Python 環(huán)境變量,這篇文章主要介紹了Windows安裝Anaconda并且配置國內鏡像教程,需要的朋友可以參考下
    2023-01-01
  • Django項目打包完整步驟以及可能出現的問題

    Django項目打包完整步驟以及可能出現的問題

    django項目的結構大體上都是類似,打包主要的功能就是把一些不需要部署的文件剔除,把需要部署的文件直接壓縮打包,下面這篇文章主要給大家介紹了關于Django項目打包完整步驟以及可能出現問題的相關資料,需要的朋友可以參考下
    2023-06-06

最新評論