这是一个高级问题,但看起来很简单 - 请参阅代码(一个全局变量,每个 http 处理程序调用都会增加一个变量)。
some_global_var = 0
class DebugCgiHandler(webapp.RequestHandler):
def get(self):
some_global_var++
self.response.out.write(some_global_var)
Q1。问题是如果变量设置为 1 并且并发调用发生在另一个请求中,那么在 Python 2.5 和 Python 2.7 单线程模式下会发生什么,因此变量将在第二个请求之前递增self.response.out.write(some_global_var)
。第一个请求中将显示什么,第二个请求中将显示什么?
Q2。第二个问题是,如果 Python 2.7 以多线程模式运行,在同样的情况下会发生什么?
Q3。如何在整个请求处理过程中避免变量更改以保持相同的值直到最后免受其他线程的影响?