बोतल के लिए हैलो दुनिया डेमो है:फ्लास्क (डब्लूएसजीआई) में एक वैश्विक सिंगलटन के साथ काम करना, क्या मुझे दौड़ की स्थिति के बारे में चिंता करने की ज़रूरत है?
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
फ़ंक्शन एक ही समय में एकाधिक धागे पर चल रहा था, और फिर हमारे पास दौड़ की स्थिति होगी। क्या ये सही है? यदि उपरोक्त कोड थ्रेड सुरक्षित नहीं है, तो मैं इसे थ्रेड सुरक्षित बनाने के लिए क्या कर सकता हूं?
ग्लोबल्स से बचने का एक संभावित समाधान है, लेकिन क्या आप हमेशा ग्लोबल्स से बच सकते हैं? अगर मुझे पाइथन ऑब्जेक्ट कैश की तरह कुछ चाहिए तो क्या होगा?
आपका उदाहरण (कटौती और वास्तव में चिपकाया) देता है मेरे लिए एक 500 है, क्योंकि एक काम से पहले संदर्भित है। – jeremyjjbrown
यह वास्तव में निर्दिष्ट प्रश्न का उत्तर नहीं देता है। क्या आप लॉक करने के लिए _need_ है? किस परिस्थितियों में? क्या यह केवल जीआईएल के बिना दुभाषियों के लिए है? – Basic