Flask核心机制--上下文源码剖析

  了解过flask的python开发者想必都知道flask中核心机制莫过于上下文管理,当然学习flask如果不了解其中的处理流程,可能在很多问题上不能得到解决,当然我在写本篇文章之前也看到了很多博文有关于对flask上下文管理的剖析都非常到位,当然为了学习flask我也把对flask上下文理解写下来供自己参考,也希望对其他人有所帮助。

二、知识储备 threadlocal

  在多线程中,线程间的数据是共享的, 但是每个线程想要有自己的数据该怎么实现? python中的threading.local对象已经实现,其原理是利用线程的唯一标识作为key,数据作为value来保存其自己的数据,以下是demo演示了多个线程同时修改同一变量的值的结果:

#!/usr/bin/env python3 # -*- coding:utf-8 -*- # Author:wd import threading import time values=threading.local() def run(arg): values.num=arg #修改threading.local对象的name数据 time.sleep(1) print(threading.current_thread().name,values.num) #打印values.num for i in range(3): th = threading.Thread(target=run, args=(i,), name='run thread%s' % i) th.start() 结果: run thread0 0 run thread1 1 run thread2 2

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyjfs.html