मैं बड़ी संख्या में वस्तुओं के लिए ईवेंट घटनाओं के ऐतिहासिक रिकॉर्ड को संग्रहीत करने और पूछताछ के समाधान की जांच कर रहा हूं।पायथन में एल्गोरिदम हजारों क्रमांकित घटनाओं के लिए दैनिक घटना को स्टोर और खोजने के लिए?
यह वह जगह है सरल परिदृश्य: मैं एक दैनिक 200 000 streetlamps का लॉग (sl200000 को SL1 लेबल), जो करता है, तो दीपक दिन हो या नहीं पर परिचालन था पता चलता हो रही है। इससे कोई फर्क नहीं पड़ता कि दीपक सेवा में कितना समय था जब यह किसी दिए गए कैलेंडर दिन पर था।
जानकारी के अन्य टुकड़े के साथ-साथ प्रत्येक दीपक के लिए जमा हो जाती है और अजगर कक्षा की शुरुआत कुछ इस तरह दिखता है:
class Streetlamp(object):
"""Class for streetlamp record"""
def __init__(self, **args):
self.location = args['location']
self.power = args['power']
self.inservice = ???
मेरे py-foo भी महान नहीं है और मैं एक समाधान से बचने के लिए चाहते हैं जो डिस्क/मेमोरी स्टोरेज पर बहुत लालची है। तो एक वर्ष (वर्ष, महीना, दिन) tuples के एक उपकरण के साथ एक समाधान एक समाधान हो सकता है, लेकिन मैं एक अधिक कुशल समाधान के लिए पॉइंटर्स प्राप्त करने की उम्मीद कर रहा हूँ।
एक रिकॉर्ड जनवरी 1. के साथ शुरू प्रत्येक बिट एक साल के एक दिन का प्रतिनिधित्व इसलिए, अगर एक दीपक परिचालन 2010 की पहली तीन दिन था के साथ एक सा धारा के रूप में संग्रहित किया जा सकता है, तो रिकॉर्ड हो सकता है:
साल सीमाओं के पारsl1000_up = dict('2010': '11100000000000...', '2011':'11111100100...')
खोजें मर्ज की आवश्यकता होगी, छलांग साल एक विशेष मामले हैं, के साथ साथ मैं/कोड की जरूरत है कि हम इस घर विकसित समाधान के साथ एक निष्पक्ष बिट डिकोड। यह सही नहीं लगता है। speed-up-bitstring-bit-operations, how-do-i-find-missing-dates-in-a-list और finding-data-gaps-with-bit-masking जहां दिलचस्प पोस्टिंग आईं। मैंने python-bitstring की भी जांच की और कुछ googling किया, लेकिन कुछ भी वास्तव में फिट नहीं लगता है।
इसके अतिरिक्त मैं संभव होने के लिए 'अंतराल' खोजना चाहता हूं, उदा। 'कार्रवाई से तीन या अधिक दिन' और यह आवश्यक है कि ध्वजांकित दिन को वास्तविक कैलेंडर तिथि में परिवर्तित किया जा सके।
मैं संभावित समाधानों के लिए विचारों या पॉइंटर्स की सराहना करता हूं। आगे की जानकारी जोड़ने के लिए, यह ब्याज की बात हो सकती है कि बैक-एंड डीबी का उपयोग जेडओडीबी और शुद्ध पायथन ऑब्जेक्ट्स है जिसे मसालेदार किया जा सकता है।
विज्ञानविदों को इंगित करने के लिए धन्यवाद। टाइम्सरीज़। ऐसा लगता है कि मुझे सबसे अधिक विश्लेषण करना है। एक साल के लिए एक सरणी में सभी दीपक भंडार करना संभव नहीं है, क्योंकि मैं तत्काल वस्तु में एक दीपक के लिए रिकॉर्ड स्टोर करना चाहता हूं। हालांकि, यह अनुकूलित करने के लिए आसान होना चाहिए और numpy के साथ मैं पहिया को शीर्ष reinvent नहीं है। केवल एक पायथन नोब इस पैकेज को अनदेखा कर सकता है ;-) – Axial
यह जानना उचित है कि एक numpy bool पूरे बाइट के रूप में संग्रहीत किया जाता है, इसलिए ऐसा लगता है कि यह मेमोरी कुशल नहीं हो सकता है। –