zoukankan      html  css  js  c++  java
  • 线程安全,偏函数和面向对象补充

    flask进阶

    什么是线程安全

    极快的解决阻塞,保证公共对象的安全性。
    浪费非常严重的资源
    
    时空转换:使用空间换取时间
    
    原理:
        class Foo(object):
            pass
    
        f=Foo()
    
        f.num=0
    
    
        dic={}
    
        def add(i):
            f.num=i
            # print(get_ident())
            dic[get_ident()]=deepcopy(f)
            time.sleep(1)
            print(dic[get_ident()].num)
    
        for i in range(20):
            task=Thread(target=add,args=(i,))
            task.start()
    
    使用local:
        class Foo(local):
            pass
    
        f=Foo()
    
        f.num=0
        def add(i):
            f.num=i
            # print(get_ident())
            time.sleep(1)
            print(f.num)
    
    
        for i in range(20):
            task=Thread(target=add,args=(i,))
            task.start()
    

    什么是偏函数

    将原函数和原函数接收的参数一并存放. 返回新函数,在执行新函数时,将参数传入原函数中一并执行
    
    from functools import partial
    def abfunc(a,b):
        return a+b
    newab=partial(abfunc,2,3)
    print(newab)
    print(newab())
    

    面向对象(oop)

    __call__方法

    类实例化对象加()  执行类的__call__方法
    
    class Foo(object):
        def __call__(self, *args, **kwargs):
            # print("aaaa")
            return "BBB"
    f=Foo()
    f()
    

    属性的创建,赋值,提取

    创建

    class Foo(object):
        pass
    f=Foo()
    f.name="alexdsb"
    
    

    _setattr_

    class Foo(object):
    	pass
    
    f=Foo()
    f.name=123
    
    使用类实例化对象.属性的时候调用的是__setattr__
    

    _getattr_

    class Foo(object):
    	pass
    
    f=Foo()
    f.name=123
    f.name
    
    在类里没有name属性,没有静态属性,在__init__没有初始化name方法时.使用实例化对象.属性名 是调用__getattr__ (__getattribute__)
    

    _setitem_

    class Foo(object):
    	pass
    
    f=Foo()
    f[name]=123
    
    使用f[name]=123 增加属性时,调用__setitem__方法
    

    _getitem_

    class Foo(object):
    	pass
    
    f=Foo()
    f[name]=123
    f[name]
    
    使用f[name] 获取属性时,调用__getitem__方法
    

    请求上下文

    请求是如何到达flask应用的

    ···

  • 相关阅读:
    面试题4:替换空格之发散思维
    一个简单的欢迎webpart
    MOSS2010 选项卡
    在Ribbon中添加自定义按钮
    老中医
    [SharePoint 2010 的那些事儿 – Secure Store Service]SharePoint 2010中的单点登录
    使用SharePoint Designer2010 向SharePoint2010的Ribbon中添加自定义操作
    耐心看完,越到后面越精彩
    高端人才必看,生意人必读
    moss 2010 开发人员面板的使用
  • 原文地址:https://www.cnblogs.com/luyi84895838/p/12192999.html
Copyright © 2011-2022 走看看