flask涉及技术

一:threading.local
作用:为每个线程或协程创建一个内存空间,存取数据,空间与空间相互独立,达到数据隔离的作用

1. threading.local 应用
场景:多个线程同时访问一个数据,这时肯定会出错
现在有两种解决方案:
(1)需要给数据加锁,一个线程访问完数据之后,另外一个线程才能访问
(2)给每个线程在内存中创建独立的空间,把取到的数据放到独立的内存空间中,达到数据之间隔离 threading.local
需要获取线程的唯一标识,给内存空间做标识 threading.get_ident()

2. __getattr__, __setattr__ (对象触发方法,并且给方法赋值)
class Local(object):
def __getattr__(self,item):
print('__getattr__', item)

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

obj = Local()
obj.xxx # 此时会触发类中的 __getattr__ 方法,把 xxx 赋值给 item
obj.xxx=1 # 此时会触发类中的 __setattr__ 方法,把 xxx 赋值给 key, 1 赋值 values

 

二:栈和队列
队列:先进先出
栈:先进后出:因为最开始进的排在前,后进排后,删除是从后往前删除

基于列表的栈
class Stack(objects):
def __init__(self):
self.data = []

def push(self, val):
return self.data.append(val)

def pop(self):
return self.data.pop()

obj = Stack()
obj.push("joe")
obj.push("kevin")
obj.push("ben")

print(obj.data) # ['joe', 'kevin', 'ben']
obj.pop()
print(obj.data) #['joe', 'kevin']

 

三: __slots__ 指定用户能访问类中的变量, 如果在__slots__ 未指定,用户就无权访问

 

posted @ 2020-03-16 10:24  hbfengj  阅读(284)  评论(0)    收藏  举报