最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flask框架單例模式實(shí)現(xiàn)方法詳解

 更新時(shí)間:2019年07月31日 10:50:42   作者:lmw1239225096  
這篇文章主要介紹了Flask框架單例模式實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了flask框架單例模式的4種實(shí)現(xiàn)方式與相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Flask框架單例模式實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

單例模式:

程序運(yùn)行時(shí)只能生成一個(gè)實(shí)例,避免對(duì)同一資源產(chǎn)生沖突的訪問(wèn)請(qǐng)求。

Django   admin.py下的admin.site.register() ,  site就是使用文件導(dǎo)入方式的單例模式

創(chuàng)建到單例模式4種方式:

  • 1.文件導(dǎo)入
  • 2. 類(lèi)方式
  • 3.基于__new__方式實(shí)現(xiàn)
  • 4.基于metaclass方式實(shí)現(xiàn)

1.文件導(dǎo)入:

in  single.py

class Singleton():
  def __init__(self):
    pass
site = Singleton()

類(lèi)似:

import time  第一次已經(jīng)把導(dǎo)入的time模塊,放入內(nèi)存
import time  第二次內(nèi)存已有就不導(dǎo)入了

in  app.py

from single.py import site #第一次導(dǎo)入,實(shí)例化site對(duì)象并放入內(nèi)存

in  views.py

from single.py import site #第二次導(dǎo)入,直接從內(nèi)存拿。

2.類(lèi)方式:

缺點(diǎn):改變了單例的創(chuàng)建方式

obj = Singleton.instance()

# 單例模式:無(wú)法支持多線程情況
import time
class Singleton(object):
  def __init__(self):
    import time
    time.sleep(1)
  @classmethod
  def instance(cls, *args, **kwargs):
    if not hasattr(Singleton, "_instance"):
      Singleton._instance = Singleton(*args, **kwargs)
    return Singleton._instance
# # 單例模式:支持多線程情況
import time
import threading
class Singleton(object):
  _instance_lock = threading.Lock()
  def __init__(self):
    time.sleep(1)
  @classmethod
  def instance(cls, *args, **kwargs):
    if not hasattr(Singleton, "_instance"):
      with Singleton._instance_lock:
        if not hasattr(Singleton, "_instance"):
          Singleton._instance = Singleton(*args, **kwargs)
    return Singleton._instance

3.基于__new__方式實(shí)現(xiàn):

單例創(chuàng)建方式:

obj1 = Singleton()
obj2 = Singleton()

import time
import threading
class Singleton(object):
  _instance_lock = threading.Lock()
  def __init__(self):
    pass
  def __new__(cls, *args, **kwargs):
    if not hasattr(Singleton, "_instance"):
      with Singleton._instance_lock:
        if not hasattr(Singleton, "_instance"):
          Singleton._instance = object.__new__(cls, *args, **kwargs)
    return Singleton._instance

4.基于metaclass方式實(shí)現(xiàn)

基于metaclass方式實(shí)現(xiàn)的原理:

  • 1.對(duì)象是類(lèi)創(chuàng)建,創(chuàng)建對(duì)象時(shí)候類(lèi)的__init__方法自動(dòng)執(zhí)行,對(duì)象()執(zhí)行類(lèi)的 __call__ 方法
  • 2.類(lèi)是type創(chuàng)建,創(chuàng)建類(lèi)時(shí)候type的__init__方法自動(dòng)執(zhí)行,類(lèi)() 執(zhí)行type的 __call__方法

單例創(chuàng)建方式:

obj1 = Foo()
obj2 = Foo()

import threading
class SingletonType(type):
  _instance_lock = threading.Lock()
  def __call__(cls, *args, **kwargs):
    if not hasattr(cls, "_instance"):
      with SingletonType._instance_lock:
        if not hasattr(cls, "_instance"):
          cls._instance = super(SingletonType,cls).__call__(*args, **kwargs)
    return cls._instance
class Foo(metaclass=SingletonType):
  def __init__(self):
    pass

希望本文所述對(duì)大家基于flask框架的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python 正則表達(dá)式(?=...)和(?<=...)符號(hào)的使用

    Python 正則表達(dá)式(?=...)和(?<=...)符號(hào)的使用

    本文主要介紹Python 正則表達(dá)式(?=...)和(?<=...)符號(hào)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Python讀寫(xiě)Excel文件庫(kù)的實(shí)現(xiàn)示例

    Python讀寫(xiě)Excel文件庫(kù)的實(shí)現(xiàn)示例

    本文主要介紹了Python讀寫(xiě)Excel文件庫(kù)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • pandas round方法保留兩位小數(shù)的設(shè)置實(shí)現(xiàn)

    pandas round方法保留兩位小數(shù)的設(shè)置實(shí)現(xiàn)

    本文主要介紹了pandas round方法保留兩位小數(shù)的設(shè)置實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 教你用Python創(chuàng)建微信聊天機(jī)器人

    教你用Python創(chuàng)建微信聊天機(jī)器人

    這篇文章主要手把手教你用Python創(chuàng)建微信聊天機(jī)器人,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 最新評(píng)論

    漾濞| 峨眉山市| 铜梁县| 花莲市| 独山县| 临洮县| 大足县| 东阿县| 额敏县| 岳池县| 大宁县| 上蔡县| 武清区| 图们市| 丘北县| 银川市| 偏关县| 蒲城县| 淮南市| 济南市| 彰武县| 绩溪县| 盐源县| 腾冲县| 福海县| 道孚县| 惠东县| 明光市| 东宁县| 青浦区| 天祝| 车险| 甘谷县| 合阳县| 潍坊市| 周口市| 右玉县| 彭水| 江门市| 登封市| 红桥区|