सभी GPU का नाम, मॉडल और GPU ram निकालें ?

 मुझे मूल रूप से पता नहीं है कि आपका कोई भी चर क्या है। या आपका कोड वास्तव में क्या हासिल करने वाला है। और वास्तव में, इस मामले में आप जो चाहते हैं उसे हासिल करने का एक बेहतर तरीका है। हालाँकि, यह जानना कि स्ट्रिंग और लिस्ट को कुशलता से पार्स करना भी कभी-कभी आवश्यक होता है, इसलिए यह है कि आप यह कैसे बेहतर कर सकते हैं।

आपके कोड में, अधिकांश लाइनें किसी सूची से अनावश्यक तार निकालने पर खर्च की जाती हैं। मैन्युअल रूप से उनमें से प्रत्येक को हटाने के बजाय (और यहां तक ​​कि उन लोगों के लिए गार्ड जोड़ना भी जिन्हें आप जानते हैं कि सूची में भी मौजूद नहीं हो सकता है, उम्मीद है कि आप उन में से कोई भी याद नहीं करते हैं), बस उन शर्तों की एक ब्लैकलिस्ट परिभाषित करें जिन्हें आप अपनी सूची में कभी नहीं चाहते हैं और उन्हें बाहर करो। यदि आप उस ब्लैकलिस्ट के लिए डेटा संरचना के रूप में एक सेट चुनते हैं, तो आपको केवल अपनी सूची में एक बार पुनरावृति करना होगा और जांचना होगा कि क्या ब्लैक लिस्ट में प्रत्येक तत्व O (1) है या नहीं, यह एल्गोरिथम O (n) बना रहा है।

दूसरी ओर आपका कोड आपके द्वारा निकाले गए हर एक पद के लिए O (n) है, क्योंकि पूरी सूची को सबसे खराब स्थिति में आइटम के लिए जांचना आवश्यक है, और दो बार अगर आप पहली बार चेक करते हैं कि क्या सूची में कोई शब्द मौजूद है , जो O (n) भी है। यह आपके कोड O (nk) को n की विधियों की सूची और आपके द्वारा हटाए जाने वाले शब्दों की संख्या के साथ बनाता है।

चलो दक्षता को अनदेखा करते हैं। मुझे यह पता लगाने में पाँच मिनट लगे कि आप क्या करने की कोशिश कर रहे थे। संभव तरह से, यह एक गड़बड़ है। लेकिन चलो ठीक है!

आपके चर नाम भयानक हैं। मुझे कोई अंदाजा नहीं है कि गधा क्या होता है। एक गधे के बारे में क्या? निश्चित रूप से यह एक बुरा विचार है, क्योंकि दूसरे के लिए गलती करना बहुत आसान है। यहां तक ​​कि अगर यह नहीं था, तो वे क्या हैं? एक चर नाम का वर्णन करना चाहिए कि वह क्या रखता है। यादृच्छिक वर्णों का एक गुच्छा सहायक नहीं है। समान gpu_ouy के लिए जाता है। क्या वह टाइपो है? Gpu_a और gpu_b क्या हैं? Aq क्या है? सी क्या है? सा क्या है? इनमें से कोई भी चर नाम आपके कोड को पढ़ने वाले किसी व्यक्ति को उनके कार्य को समझने में मदद नहीं करता है।

लूप के लिए लेन का उपयोग न करें। मुहावरेदार अजगर दृष्टिकोण संग्रह पर सिर्फ पुनरावृत्ति करना है (और इसे लंबाई और सूचकांक से निपटने दें)। इसलिए इसके बजाय:

एक्स फॉर रेंज में (len (c.Win32_VideoController ())):
    गधा = str (c.in32_VideoController () [x])
इसे इस्तेमाल करो:

नियंत्रक के लिए c.Win32_VideoController () में:
   # कंट्रोलर के साथ कुछ करें ...
   उत्तीर्ण करना
बड़े मुद्दे पर पहुंचने से पहले कुछ यादृच्छिक बिंदु:

Sqa = int (((int (str (saa [1])) को प्रतिस्थापित करें। (";", "") / 1024) / 1024) / 1000), int को इतना कॉल करने के बजाय उपयोग करें। यह फर्श विभाजन करता है। तो int (int (x / 1024) / 1024) x // 1024 // 1024 के समान है। लेकिन तब आप उन्हें विलय कर सकते हैं: x // (1024 * 1024)। लेकिन वे संख्याएँ क्या हैं? मुझे संदेह है कि आप बाइट्स से जीबी में परिवर्तित हो रहे हैं (उम्मीद है कि 1000 एमबी = 1 जीबी सही नहीं है जब तक कि आप हार्डड्राइव से निपट नहीं रहे हैं, जो कभी-कभी माप को परिभाषित करते हैं जैसे)। इसलिए इसके बजाय एक स्थिरांक का उपयोग करें: BYTES_PER_GB = 1024 * 1024 * 1000। फिर करें: int (vram_size_bytes) // BYTES_PER_GB।
अपने रिक्ति और स्वरूपण को ठीक करें। PEP8 आपका कोड!
ऊपर saa [1] क्या है? आपके पास कुछ जादू के संकेत हैं जिन्हें कोई भी str (नियंत्रक) के मूल्य को समझे बिना नहीं समझ सकता है। जादुई सूचकांकों के लिए चीजों को वर्णनात्मक नाम देना (चर का उपयोग करना, चर चर का उपयोग करना)।
निष्कासन विफल हो सकता है (यदि तत्व सूची में नहीं मिला है तो यह एक मान बढ़ाता है)।
आपको gpu_a और gpu_b को आरंभ करने की आवश्यकता नहीं है (उदा। Gpu_a = "" अनावश्यक है), क्योंकि बाद में आप उन्हें सामान असाइन करते हैं। उन्हें पहले असाइनमेंट पर आरंभीकृत किया जाएगा।
लेकिन अब सबसे बड़ा मुद्दा: आप एक टन अतिरिक्त काम कर रहे हैं जो आपको लगभग निश्चित रूप से नहीं करना है! मैं इसके चारों ओर wmi के रैपिंग के लिए अच्छे डॉक्स नहीं ढूंढ सकता, लेकिन माइक्रोसॉफ़्ट डॉक्स के अनुसार, यह संभवतः किसी प्रकार का ऑब्जेक्ट देता है। इसका मतलब यह है कि आप जो भी प्रयास कर रहे हैं, वह इस जटिल और नाजुक स्ट्रिंग पार्सिंग के बजाय, आप संभवतः नियंत्रक द्वारा कर सकते हैं जानकारी पर प्राप्त कर सकते हैं। AdapterRAM // BYTES_PER_GB या कंट्रोलर। डायस्क्रिप्शन (जहां नियंत्रक wmi.WMI में नियंत्रक के लिए आता है) () .Win32_VideoController ())। पायथन 3 चलाकर अजगर REPL खोलें और फिर निम्नलिखित चलाएं:

>>> आयात wmi
>>> नियंत्रक = wmi.WMI ()। Win32_VideoController () [0]
>>> मदद (नियंत्रक)
>>> दिर (नियंत्रक)
इससे आपको उन सभी जानकारियों का अंदाजा हो सकता है जिनसे आप इसे प्राप्त कर सकते हैं। तुम सब कि स्ट्रिंग पार्स करने की जरूरत नहीं है! वस्तु के गुणों पर जानकारी पहले से ही उपलब्ध है!


Comments