Flask 上下文管理

简单阐述:

1、'请求刚进来':
     将request,session封装在RequestContext类中
     app,g封装在AppContext类中
     并通过LocalStack将requestcontext和appcontext放入Local类中
2、'视图函数中':
     通过localproxy--->偏函数--->localstack--->local取值
3、'请求响应时':
      先执行save.session()再各自执行pop(),将local中的数据清

偏函数:

from functools import partial,reduce

def fun(a,b):
    print(a)
    print(b)
    return a+b

new_fun=partial(fun,10)
ret=new_fun(20)   #将函数作为第一项作为参数
print(ret)

reduce函数使用

res=reduce(lambda a,b:a+b,[1,2,3,4,5,6,7,8])
print(res)
#所有数相加

函数基础

class MyClass(object):
    def __call__(self, *args, **kwargs):
        print(66666)

    def __setattr__(self, key, value):
        print(key,value)

    def __getattr__(self, item):
        print(item)

    def __setitem__(self, key, value):
        print(key,value,"item")

    def __getitem__(self, item):
        print(item,"item")

foo=MyClass()
foo()           #执行的是__call__方法
foo.name        #执行的是__getattr__
foo.name="小王"  #执行的是__setaattr__
foo["name"]      #执行的是__getitem__
foo["name"]="小王"   #执行的是__setitem__
#实例化类的时候先执行__new__方法没写默认执行object.__new__,在执行实例化对象的__init__实例化单例

自己写一个栈:

# LocalStack

from threading import get_ident   #一如获取线程id
import threading


class MyLocalStack(object):

    storage={}

    def push(self,item):
        try:
            self.storage[get_ident()].append(item)
        except:
            self.storage[get_ident()]=[item]

    def top(self):
        return self.storage[get_ident()].pop()


my_local_stack = MyLocalStack()

import time
def go(i):
    my_local_stack.push(i)
    # time.sleep(1)
    # my_local_stack.top()


for i in range(5):
    th = threading.Thread(target=go,args=(i,))
    th.start()


print(my_local_stack.storage)

转载于:https://www.cnblogs.com/litieshuai/p/10451659.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值