एक्सेल सीपीयू उपयोग को सीमित करें


31

क्या सीपीयू का उपयोग करने के लिए एक्सेल को सीमित करने का एक तरीका है कि रनिंग करते समय पहुंच कितनी है? मेरे पास एक VBA स्क्रिप्ट है जो विशाल सरणी सूत्रों का एक समूह की गणना करता है। पूरी गणना में मेरे CPU के 100% का उपयोग करने में 20 मिनट लग सकते हैं, लेकिन मैं समय के दौरान अपनी मशीन का उपयोग नहीं कर सकता हूं और इसके बजाय इसे 50% CPU उपयोग की तरह पृष्ठभूमि में चलाना होगा ताकि मैं अन्य चीजें करना जारी रख सकूं। कोई सुझाव?

मेरा ओएस विंडोज 7 एंटरप्राइज 64-बिट है और एक्सेल संस्करण 2007-32 बिट है


1
विंडोज? कौन सा संस्करण?
DavidPostill

विंडोज 7. मैं पोस्ट में शामिल कर देंगे
learningAsIGo

8
एक मल्टीकोर सीपीयू प्राप्त करें? यदि आपके पास पहले से ही एक है (जो नहीं है?) और एक्सेल सभी कोर का उपयोग कर रहा है (जो मुझे नहीं पता था कि एक्सेल क्या कर सकता है), तो टास्क मैनेजर में अपनी आत्मीयता निर्धारित करें।
user253751

2
यह प्रश्न का उत्तर नहीं देता है, लेकिन हजारों कोशिकाओं की गणना और अद्यतन शुरू करने से पहले सुनिश्चित करें कि आप विंडो अपडेट बंद करते हैं। अगर आपके पास कोई चार्ट है तो उन्हें भी बंद कर दें। VBA धीमा है, लेकिन जब यह वास्तव में धीमा होता है तो यह आमतौर पर एक या दोनों को दोष देने के लिए होता है।
कॉक्सी

1
@cat: नहीं, Windows टास्क मैनेजर में 100% CPU उपयोग का मतलब है सभी तार्किक प्रोसेसर में 100%। यदि केवल एक कोर भरा जाता है तो यह या तो 25% होगा (हाइपर थ्रेडिंग के साथ एक सामान्य दोहरे कोर पर) या ~ 36% (टर्बो बूस्टिंग)।
मार्थेन काया पॉलो

जवाबों:


54

यदि किसी सूत्र से VBA फ़ंक्शन को कॉल किया जाता है या यदि आपकी स्क्रिप्ट उत्पन्न होती है या कई सूत्रों के पुनर्गणना को बल देती है, तो यह निश्चित रूप से एक्सेल के बहु-थ्रेडेड गणना सुविधा का उपयोग करना चाहिए । क्रमशः, यह या तो प्रत्येक सूत्र के लिए आपके VBA फ़ंक्शन के कई उदाहरण चलाएगा, या एक साथ एकाधिक कक्षों को पुनर्गणना करेगा जबकि आपकी vba स्क्रिप्ट एक ही सूत्र पर चल रही है।

आप एक्सेल द्वारा एक्सेल ऑप्शंस ... एडवांस टैब ... फॉर्मूला सेक्शन में फॉर्मूला रिकॉल करने के लिए थ्रेड्स की संख्या सीमित कर सकते हैं।

यहाँ छवि विवरण दर्ज करें


VBA उप समस्या नहीं है, यह एक्सेल सरणी सूत्र है जो VBA कोड उत्पन्न करता है।
learningAsIGo

@learningAsIGo अधिकार, मैंने अपना उत्तर सरल कर दिया। आइए जानते हैं कि थ्रेड्स की संख्या को 1 पर सेट करना मदद करता है या नहीं।
mtone

1
ऐसा लगता है कि चाल चली गई है। मैं इसे 3 कोर पर सेट करता हूं और यह 75% सीपीयू में अधिकतम होता है जिससे मुझे अन्य काम करने के लिए बहुत जगह मिल जाती है। धन्यवाद!
learningAsIGo

27

प्राथमिकता कम करने के बजाय, कार्य प्रबंधक में आत्मीयता को बदलने का प्रयास करें। यदि आपके पास 1 से अधिक सीपीयू है, तो आप सीपीयू की संख्या को सीमित कर सकते हैं जिसे एक्सेल उपयोग करेगा। यह अन्य चीजों पर काम करने के लिए अन्य सीपीयू को मुक्त करेगा।

प्रक्रियाओं टैब में एक्सेल पर राइट क्लिक करें और सेट एफिनिटी चुनें। वह CPU चुनें, जहां आप Excel चलाना चाहते हैं।


3
ध्यान दें कि आत्मीयता के लिए, विंडोज प्रत्येक कोर को सीपीयू भी मानता है। (तो यह काम करेगा यदि आपके पास एक दोहरी या क्वाड कोर है।)
jpmc26

1
खैर अगर कोर के बारे में विशेष रूप से बात कर रहे हैं, तो हाइपरथ्रेडिंग थ्रेड्स क्यों नहीं? वे अलग-अलग तार्किक सीपीयू भी हैं। यानी HT के साथ एक क्वाड-कोर CPU में 8 तार्किक CPU होंगे।
रुस्लान

मैं हैंडब्रेक चलाने के दौरान हर समय ऐसा करता हूं और बस एक घंटे के लिए इंटरनेट को ब्राउज़ करना चाहता हूं या ट्रांसकोडिंग प्रक्रिया को रोकना चाहता हूं। मुझे लगता है कि यह उल्लेख करना सार्थक होगा कि कुछ समय बाद कोर कार्यक्रम में वापस आ जाते हैं और आत्मीयता "रीसेट" हो जाती है, कम से कम मेरे साथ तो यह होता है।
मंकीजियस

2
@MonkeyZeus आमतौर पर, एक प्रक्रिया से बाहर निकलने पर आत्मीयता नहीं बचती है। यह केवल वर्तमान में चल रही प्रक्रिया पर लागू होता है। यह हो सकता है कि हैंडब्रेक स्वयं नई प्रक्रियाओं को जन्म दे रहा हो या आपने नई शुरुआत की हो।
jpmc26

@ jpmc26 अच्छा पता है! मैंने निश्चित रूप से खुद एक नई प्रक्रिया शुरू नहीं की है, इसलिए इसे अपने दम पर पैदा करना होगा।
मंकीज़ेउस

7

आप एक्सेल प्रक्रिया की प्राथमिकता को कम करने की कोशिश कर सकते हैं, कार्य प्रबंधक को खोलकर, "विवरण" या "प्रक्रियाएं" टैब (विंडोज के आपके संस्करण के आधार पर) पर स्विच करके, सही ढंग से excel.exe प्रक्रिया पर क्लिक करें, और एक का चयन करके कम प्राथमिकता। यह अन्य प्रक्रियाओं के लिए अधिक CPU समय देना चाहिए।


1
काम करने के लिए प्रतीत नहीं होता है: मैंने बहुत कम प्राथमिकता दी है और यह अभी भी कंप्यूटर को पीछे छोड़ देता है।
learningAsIGo

1
हो सकता है कि अपने वेब ब्राउज़र की प्राथमिकता बढ़ाने की कोशिश करें, या जो भी आप एक ही समय में करने की कोशिश कर रहे हैं? मुझे यह चर्चा मिली कि बदलती प्राथमिकताएं कितनी प्रभावी हैं
स्लिथी

3
@ स्लीथवॉव्स: यह वास्तव में मायने नहीं रखना चाहिए। प्राथमिकता निर्धारित करता है कि कौन सा प्रोग्राम सीपीयू प्राप्त करता है, अगर कई उम्मीदवार हैं। एक्सेल को बहुत कम सेट करने का मतलब है कि इसे केवल एक सीपीयू टुकड़ा मिलता है जब अन्य सभी प्रोग्राम किए जाते हैं। हालाँकि, जब Excel को CPU स्लाइस मिलता है, तो वह उस स्लाइस को नहीं देगा। यह सिर्फ अगले CPU समय स्लाइस के लिए प्रतियोगिता खो देगा।
MSalters

3

VBA में या एक घोषणा के माध्यम से नींद और प्रतीक्षा कार्य उपलब्ध हैं। हालांकि, "अंगूठे का अत्यधिक सरल नियम" स्लीप () का उपयोग कभी नहीं करना है। (Google '"कभी नींद का उपयोग न करें) (" प्रोग्रामिंग ")

Application.Wait ( https://msdn.microsoft.com/en-us/library/office/ff822851.aspx ) के लिए डॉक्टर पृष्ठ । ध्यान दें कि स्लीप और प्रतीक्षा के कारण एक्सेल आपके द्वारा निर्दिष्ट अवधि के लिए अनुत्तरदायी बन जाएगा और यह समय-स्लाइस "ट्रेन मलबे" का कारण बन सकता है।

यदि आपकी गणना में किसी प्रकार का एक लूप शामिल है, तो अपने विशिष्ट उद्देश्य के लिए इसे संभालने का एक तरीका (सीपीयू उपलब्धता के लिए गणना का समय) अपने स्वयं के एक विशेष प्रतीक्षा कार्य करना है, उदाहरण के लिए, DoEvents () 1 सेकंड और फिर लौटता है।

DoEvents मूल रूप से अपने कोड / दुभाषिया को OS आदि के लिए समय देने के लिए कहता है। यह निश्चित रूप से आपके कोड को लंबे समय तक ले जाएगा। गणना चालू होने के दौरान यह आपको कार्यपत्रक को संपादित करने की अनुमति भी दे सकती है, इसलिए आपका माइलेज अलग-अलग हो सकता है। परीक्षा।

उदाहरण के लिए, https://stackoverflow.com/questions/469347/is-there-an-equivalent-to-thread-sleep-in-vba


2

कुछ वर्षों पहले एक अज्ञात खोजकर्ताओं से पूछा गया था कि इसका कोई हल है: क्या ऐसे समाधान हैं जो किसी प्रक्रिया के CPU उपयोग को सीमित कर सकते हैं?

विंडोज 7 के लिए प्रोसेस टैमर काम करता है। http://www.donationcoder.com/Software/Mouser/proctamer/


0

मेरे पास एक ही मुद्दा था जब मेरे लैपटॉप में 4 जीबी मेमोरी थी। जैसे ही मैंने इसे 16GB में अपग्रेड किया, समस्या बंद हो गई। बस एक और संभव उपाय।


0

अपने मैक्रो की शुरुआत के पास कहीं निम्नलिखित 2 लाइनें जोड़ें:

'Turn off screen updating

 Application.ScreenUpdating = False

और अंत के पास ये 2 लाइनें:

'Turn screen updating back on

 Application.ScreenUpdating = True

यह तब कम काम करेगा जब आप कुछ और करेंगे।


-2

यदि आप 64 बिट OS में 32B ऑफिस का उपयोग कर रहे हैं, तो आपको इस ऐप का उपयोग करना चाहिए: http://www.ntcore.com/4gb_patch.php

इस एप्लिकेशन को मो का उपयोग करने के लिए एक्सेल या किसी अन्य कार्यालय 32 बिट सक्षम हो जाएगा


यह सवाल सीपीयू को सीमित करने के बारे में है, आपका जवाब उन ऐप पर एडब्ल्यूई को सक्रिय करने के बारे में है जो शायद एडब्ल्यूई का लाभ भी नहीं लेंगे।
मार्थेन काया पॉलो

-5

OpenOffice या LibreOffice का उपयोग करें: इसकी स्क्रिप्टिंग पावर MS एक की तुलना में बहुत अधिक प्रभावी है, और आप अपनी गणनाओं में सचमुच "थ्रॉटल" रख सकते हैं।

संपादित करें: नीचे क्यों? पर एक नज़र मैनुअल और खुद के लिए देखते हैं। आप अपनी गणना को जावा में बदल सकते हैं और उदाहरण के लिए, जेवीएम की सभी थ्रॉटलिंग पावर के साथ ठीक हो सकते हैं।


3
मैं नीचे नहीं गया था, लेकिन मैं यह मान रहा हूं क्योंकि आपने ओपी में पूछे गए बहुत ही सीधे सवाल के समाधान के बजाय वर्कअराउंड का प्रस्ताव रखा है: "क्या सीपीयू उपयोग एक्सेल को चलाने के लिए उपयोग करने की सीमा को सीमित करने का एक तरीका है? "
भिक्षु जनित

@ OpenOffice के साथ मेरी कहानी एक समान समस्या से शुरू हुई है, हमारे द्वारा किए गए सभी डॉक्स के लिए अंशांकन को लगभग एक सप्ताह का समय लगा, लेकिन उसके बाद मैंने एक राय बनाई है, कि मैं कभी भी एमएस ऑफिस का उपयोग नहीं करूंगा।
एलेक्सी वेसनिन

OpenOffice कार्यालय के लिए इस कारण से बेहतर है कि 99% लोग ऑफिस का उपयोग लिबरे में करेंगे, इसलिए डेवलपर्स (शायद इस आदमी को पसंद करते हैं)। इसलिए मैंने नीचा दिखाया।
थॉमस शेरा

@ThomasShera ठीक है, मैं बिल्कुल नहीं समझ सकता - इतने लंबे समय के लिए क्यों Microsoft लोग सामान को ठीक नहीं कर सकते हैं ? नहीं, किसी नए सामान की ज़रूरत नहीं, कोई एडऑन नहीं - बस अपने उत्पाद को वास्तव में काम करें ...
एलेक्सी वेसनिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.