Flask框架之ThreadLocal变量

Local对象隔离线程间的对象_即ThreadLocal变量

Local对象

在Flask中,类似于request对象,其实是绑定到了一个werkzeug.local.Local对象上。

这样,即使是同一个对象,那么在多个线程中都是隔离的。

类似的对象还有session以及g对象。

flask=werkzeug + sqlalchemy + jinja2


ThreadLocal变量

Python提供了ThreadLocal变量,它本身是一个全局变量,但是每个线程却可以利用它来保存属于自己的私有数据,这些私有数据对其他线程也是不可见的。


总结:
只要满足绑定到localLocal对象上的属性,在每个线程中都是隔离的,那么他就叫做ThreadLocal对象,也叫ThreadLocal变量。


python中的线程


from threading import Thread,local 

local =local() 
local.request = '具体用户的请求对象' 

class MyThread(Thread): 
	def run(self): 
		local.request = 'wukong' 
		print('子线程:',local.request) 
		mythread = MyThread() 
		mythread.start() 
		mythread.join() 
		print('主线程:',local.request)
		

Flask中的线程


from werkzeug.local import Local 

local = Local() 
local.request = '具体用户的请求对象' 

class MyThread(Thread): 
	def run(self): 
		local.request = 'wuneng' 
		print('子线程:',local.request) 
		mythread = MyThread() 
		mythread.start() 
		mythread.join() 
		print('主线程:',local.request)

发布了354 篇原创文章 · 获赞 4 · 访问量 7826

猜你喜欢

转载自blog.csdn.net/weixin_44733660/article/details/103964681
今日推荐