世界您好演示了瓶是:在Flask(WSGI)中使用全局單例,我是否必須擔心競爭條件?
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
如果我修改這個什麼像這樣:
from flask import Flask
app = Flask(__name__)
a = 1
b = 2
c = 3
@app.route("/")
def hello():
a += 1
b += a
c += b
return "Hello World!"
if __name__ == "__main__":
app.run()
我明白WSGI應用程序可能有多個線程。 hello
函數可以同時在多個線程上運行,然後我們會有競爭條件。它是否正確?如果上面的代碼不是線程安全的,我可以做些什麼來使線程安全?
避免全局性是一個可能的解決方案,但是你總是可以避免全局性?如果我想要一個像python對象緩存的東西呢?
你的榜樣(剪切和粘貼完全相同)返回給我一個500的,因爲被分配之前引用。 – jeremyjjbrown 2014-06-21 15:00:04
這實際上並未回答所述問題。你需要鎖嗎?在什麼條件下?這僅適用於沒有GIL的口譯員嗎? – Basic 2016-12-23 23:20:06