1. 程式人生 > >Python執行緒安全的單例模式

Python執行緒安全的單例模式

單例模式是指,該物件建立後,在其生命週期內記憶體中始終只有一個物件, 如果被再次呼叫時,還是返回該物件。
這樣做的好處是,可以節約記憶體,缺點是不可以根據不同的應用場景建立不同的物件。

多執行緒環境下,由於單例模式總是會去判斷 例項是否被建立,但是多個執行緒有可能會拿到相同的結果,這樣就無法實現單例模式了,因此遇到多執行緒的環境時,需要加鎖。

多執行緒單例模式:

# coding:utf-8
import threading


def synchronized(func):

    func.__lock__ = threading.Lock()

    def lock_func
(*args, **kwargs):
with func.__lock__: return func(*args, **kwargs) return lock_func class Singleton(object): """ 單例模式 """ instance = None @synchronized def __new__(cls, *args, **kwargs): if cls.instance is None: cls.instance = object.__new__(cls, *args, **kwargs) return
cls.instance

加了鎖之後,每個執行緒判斷 if cls.instance is None 這裡就變成了執行緒安全。因此可以實現多執行緒環境下,始終只有一個例項