python - Updating a module level shared dictionary -
एक मॉड्यूल स्तरीय शब्दकोश 'डी' और डीजेंगो वेब अनुप्रयोग में विभिन्न धागे / अनुरोधों से पहुंचा जा सकता है। मुझे नए डेटा के साथ हर मिनट 'डी' को अपडेट करने की आवश्यकता है और इस प्रक्रिया में लगभग 5 सेकंड लगते हैं।
सबसे अच्छा समाधान क्या हो सकता है, जहां मैं चाहता हूं कि उपयोगकर्ताओं को या तो पुराना मूल्य या डी के नए मान और बीच में कुछ भी न मिले।
मैं एक समाधान के बारे में सोच सकता हूँ जहां एक अस्थायी शब्दकोष नए डेटा के साथ बनाया गया है और इसे 'डी' को सौंपा गया है लेकिन यह निश्चित नहीं है कि यह कैसे काम करता है!
अपने विचारों की सराहना करते हैं।
धन्यवाद
शायद सबसे अच्छा - मॉड्यूल स्तर पर:
< कोड> आयात थ्रेडिंग डॉकैब = थ्रेडिंग। लॉक () डी = {}
और हर तक पहुंच d
( नहीं बस संशोधनों!) एक के साथ
ब्लॉक में है:
डॉक के साथ: पाया = कश्मीर d
और जैसे (यदि आप पायथन 2.5 पर हैं, तो आपको अपने मॉड्यूल के ऊपर स्थित __future__ आयात से_स्टेटमेंट से भी होना चाहिए)।
यह
डी लॉक के साथ, तो परिवर्तन क्रमबद्ध हैं।
d
तक गैर-संशोधित पहुंच के आसपास गार्ड की भी आवश्यकता होती है कि आप अन्यथा "पढने की तरह" संचालन ( अगर में घ:
में भी समस्याएं प्राप्त कर सकते हैं) d.get (k)
, आदि) अगर "" इसके बीच में ऑपरेशन में एक प्रकार का जहाज़ के नीचे सही से बदल जाता है "।
वैकल्पिक आर्किटेक्चर को लपेटने पर आधारित किया जा सकता है शब्दकोश (या तो लॉक के साथ अपने सभी आवश्यक तरीकों की रक्षा करने के लिए, या सभी शब्दकोश कार्यों को पूरा करने के लिए विशेष उद्देश्य थ्रेड को नियुक्त करने के लिए और अन्य सभी सूत्रों के साथ Queue.Queue
उदाहरणों के माध्यम से संचार करने के लिए), लेकिन मुझे लगता है कि इस विशेष मामले में सरल, नो-फ्रिल्स समाधान सर्वोत्तम काम करता है।
Comments
Post a Comment