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应用的

    ···

  • 相关阅读:
    Vijos Oct.28 NOIP2012模拟赛
    QBXT day3 圆盘自动机 游戏 方块
    QBXT day2 最近点对 最长路径 山峰
    1609: [Usaco2008 Feb]Eating Together麻烦的聚餐
    1617: [Usaco2008 Mar]River Crossing渡河问题
    委托的Lambda表达式
    值转换器IValueConverter
    Silverlight中遇到的一些问题
    匿名方法
    Silverlight中的Binding
  • 原文地址:https://www.cnblogs.com/luyi84895838/p/12192999.html
Copyright © 2011-2022 走看看