Alb*_*ert 9 python google-app-engine multithreading global-variables python-multithreading
我有一个谷歌appengine应用程序,我想只为该请求设置一个全局变量.我可以这样做吗?
在request_vars.py中
# request_vars.py
global_vars = threading.local()
Run Code Online (Sandbox Code Playgroud)
在另一个.py
# another.py
from request_vars import global_vars
get_time():
return global_vars.time_start
Run Code Online (Sandbox Code Playgroud)
在main.py中
# main.py
import another
from request_vars import global_vars
global_vars.time_start = datetime.datetime.now()
time_start = another.get_time()
Run Code Online (Sandbox Code Playgroud)
问题:考虑到多线程,并发请求,建立在谷歌的AppEngine,和每秒请求数百(甚至上千),将值time_start总是等于设定的值global_vars.time_start在main.py每次请求?在启用多线程/线程安全的情况下使用它是否安全?
Mar*_*ers 11
是的,使用threading.local是设置每个请求全局的一种很好的方法.您的请求将始终由一个线程处理,在Google云中的一个实例上.该线程的本地值对该线程是唯一的.
考虑到线程可以在将来的请求中重用,并始终在请求开始时重置该值.
| 归档时间: |
|
| 查看次数: |
1158 次 |
| 最近记录: |