Python全系列 教程
3567个小节阅读:5929.3k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
需求
在Flask中,类似于request
对象,其实是绑定到了一个werkzeug.local.Local
对象上。
这样,即使是同一个对象,那么在多个线程中都是隔离的。类似的对象还有session
对象。
xxxxxxxxxx
from werkzeug.local import Local
#flask=werkzeug + sqlalchemy + jinja2
Python提供了ThreadLocal 变量,它本身是一个全局变量,
但是每个线程却可以利用它来保存属于自己的私有数据,
这些私有数据对其他线程也是不可见的。
xxxxxxxxxx
from threading import Thread,local
local =local()
local.request = '具体用户的请求对象'
class MyThread(Thread):
def run(self):
local.request = 'sxt'
print('子线程:',local.request)
mythread = MyThread()
mythread.start()
mythread.join()
print('主线程:',local.request)
xxxxxxxxxx
from werkzeug.local import Local
local = Local()
local.request = '具体用户的请求对象'
class MyThread(Thread):
def run(self):
local.request = 'sxt'
print('子线程:',local.request)
mythread = MyThread()
mythread.start()
mythread.join()
print('主线程:',local.request)
只要满足绑定到"local"或"Local"对象上的属性,在每个线程中都是隔离的,那么他就叫做ThreadLocal
对象,也叫'ThreadLocal'变量。
实时学习反馈
1. 在Flask中,对于请求数据隔离说法正确的是?
A 请求过来的数据,会存储在同一个request对象中,不能数据隔离
B 为保证数据安全,需要手动给数据进行加锁
C 在Flask中,是通过给每一个请求开启一个进程保证数据安全
D local对象与Local都是可以做到数据安全的隔离
答案
1=>D