Flask 学习笔记.1

1. 主流Python Web框架

  1. django:大而全面,内部提供:ORM、Admin、中间件、Form、ModelForm、Session、缓存、信号、CSRF;
  2. flask:短小精悍,可扩展性强,第三方组件丰富;
  3. tornado:短小精悍,可扩展性强,但是第三方没这么丰富,强项——异步非阻塞。

wsgi: 全称Python Web Server Gateway Interface,
作用: 1. WSGI是一套接口标准协议/规范;
2. 通信(作用)区间是Web服务器和Python Web应用程序之间;
3. 目的是制定标准,以保证不同Web服务器可以和不同的Python程序之间相互通信

2. 自定义local对象

操作如下代码时候

from threading import Thread,local
ss=local()

def task(arg):
	#对象.val= 1/2/3/4/5
	ss.value = arg

for i in range(10):
	t=Thread(target=task,args(i,))
	t.start
  1. 使用多线程时,创建 threading.local() 对象,可以为线程每个线程开辟一块空间并进行数据存储,使用
  2. 自己通过字典创建一个类似threading.local的东西
dict_s={
		4215:{val:0}
		4217:{val:1}
		4218:{val:2}
		4219:{val:3}
		线程id:{val:*}

		}

def set(k,v):
	ident = get_ident()
	if ident in dict_s:
		dict_s[ident][k]=v
	else:
		dict_s[ident]={k:v}
def get(k):
	ident=get_ident()
	return dict_s[ident][k]
def task(arg):
	#对象.val= 1/2/3/4/5
	set('val',arg)
	v=get('val')
	print(v)
	
for i in range(10):
	t=Thread(target=task,args(i,))
	t.start
  1. 自定义Local对象(基于面向对象)PS:flask使用的就是如此方式
    ***作用:***为每个线程(协程)开辟一块空间存储数据
try:
	#获取协程id,如果没有协程,使用线程
	from greenlet import getcurrent as get_ident
except Exception as e:
	from threding import get_ident
from threading import get_ident
class dictLocal(object):
    def __init__(self):
        # self.dict_s = {}
        object.__setattr__(self,'dict_s',{})
    def __setattr__(self, key, value):
        ident = get_ident()
        if ident in self.dict_s:
            self.dict_s[ident][key] = value
        else:
            self.dict_s[ident] = {key: value}

    def __getattr__(self, item):
        ident = get_ident()
        return self.dict_s[ident][item]

def task(arg):
    obj=dictLocal()
    # 对象.val= 1/2/3/4/5

    obj.val= arg
    v = obj.val
    print(v)


for i in range(10):
    t = Thread(target=task,args=(i, ))
    t.start()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值