2010-11-26 10 views
5

तो, यहां मेरी समस्या है: मैं पायथन में कोड, लेकिन मुझे अपने कोड के कुछ हिस्सों में प्रदर्शन में सुधार करने की आवश्यकता है जो बहुत धीमी है। एक अच्छा (और आसान) समाधान साइथन का उपयोग कर रहा है; मैंने कोशिश की और अच्छे नतीजे मिले। मुद्दा यह है कि मैं अपने पायथन कोड में जोरदार कथन का उपयोग करता हूं। साइथन का उपयोग करने से पहले, मैं अपने पायथन कोड को -ओ विकल्प के साथ संकलित कर सकता था, ताकि मैं किसी भी संस्करण को किसी भी दावे परीक्षण को निष्पादित न कर सकूं, और अभी भी डीबग के लिए जोर दे। लेकिन साइथन में संकलित फाइलें हमेशा आवेषण निष्पादित करती हैं। क्या कुछ विकल्प हैं जिन्हें सम्मिलन को हटाने (या निकालने) को हटाने के लिए साइथन संकलन में पारित किया जा सकता है?साइथन में संकलन करते समय पाइथन दावे को कैसे हटाया जाए?

+0

न 'पता है ... लेकिन आप जिस फ़ाइल का उपयोग करना चाहते हैं उसमें अपने सभी पायथन सम्मिलन को टिप्पणी करने के लिए एक सरल प्रोग्राम बनाने के बारे में क्या है? – Ant

+0

+1: मुझे यह समस्या स्वयं मिली है। यह अजीब बात है कि आपके कोड को तेज़ी से बनाने के लिए डिज़ाइन किया गया कुछ भी सबसे सरल अनुकूलन नहीं करता है। –

उत्तर

7

यदि आप सी प्रीप्रोसेसर मैक्रो PYREX_WITHOUT_ASSERTIONS परिभाषित करते हैं तो साइथन दावाों को छोड़ देता है। इसलिए उत्पन्न सी फ़ाइल को संकलित करते समय 0 संकलक को -DPYREX_WITHOUT_ASSERTIONS सी संकलक में पास करें। यह कैसे करें आपकी निर्माण प्रक्रिया पर निर्भर करता है।

+0

इस तेजी से उत्तर के लिए धन्यवाद। मैं Distutils विधि का उपयोग कर रहा हूं, इसलिए मुझे यह जांचना होगा कि मैक्रो को कंपाइलर को कैसे पास किया जाए। – user521353

+1

CYTHON_WITHOUT_ASSERTIONS भी काम करता है, हालांकि हम पीछे की संगतता के लिए PYREX_WITHOUT_ASSERTIONS का समर्थन करते हैं। – robertwb

0

उपयोग pypreprocessor

कौन सा भी PYPI (Python Package Index) पर पाया जा सकता है और पिप का उपयोग कर प्राप्त किया जा।

from pypreprocessor import pypreprocessor 

pypreprocessor.parse() 

#define debug 

#ifdef debug 
...place assert to be removed here... 
#endif 

यह अनिवार्य रूप से मानक सी पूर्वप्रक्रमक सशर्त संकलन करता है के रूप में ही काम करता है:

यहाँ कार्यान्वयन है।

साइड नोट: यह मॉड्यूल दोनों python2x और python3k के साथ संगत है।

अस्वीकरण: मैं पाइप्रप्रोसेसर का लेखक हूं।

यह प्रारंभिक लोड को अतिरिक्त प्रीप्रोसेसर चरण के कारण अधिक समय लेगा लेकिन आउटपुट बाइटकोड (.pyc) अनुकूलित किया जाएगा।

संबंधित मुद्दे