साइथन के साथ हैकस्पीड
पायथन आज सबसे लोकप्रिय और लोकप्रिय प्रोग्रामिंग भाषाओं में से एक है। हालाँकि, जब आप पायथन के साथ काम करते हैं, तो आप इस बिंदु पर कमजोरियों में से एक के बारे में देखेंगे या सुनेंगे: |_+_|।
अपने पायथन कोड को गति देने के कई तरीके हैं। शायद आपने इसे कहीं पढ़ा हो:
आरएफपी के जवाब में एक प्रभावी प्रस्ताव लिखने की कुंजी क्या है?
- बहु-प्रसंस्करण पुस्तकालयों का उपयोग करना
- अतुल्यकालिक का उपयोग करना
ऊपर के रूप में, आप पायथन कोड को गति देने के लिए 2 पक्षों से संपर्क करेंगे: |_+_|और |_+_|। अब, मैं एक अलग दृष्टिकोण पेश करूंगा। यानी |_+_|।
साइथन क्या है?
समझ सकते हैं Cython Python और C/C++ के बीच का एक इंटरमीडिएट स्टेप है। यह आपको कुछ मामूली संशोधनों के साथ शुद्ध पायथन लिखने की अनुमति देता है, फिर इसे सीधे सी में अनुवादित करता है।
साइथन आपके लिए पायथन और सी की संयुक्त शक्ति लाएगा:
- पायथन कोड किसी भी समय सी या सी ++ देशी कोड को आगे और पीछे कॉल करता है।
- सी कोड जैसे प्रदर्शन के लिए पाइथन कोड को आसानी से संशोधित करें, केवल स्थिर प्रकार की घोषणाओं को जोड़कर, पायथन सिंटैक्स में भी।
- बड़े डेटा सेट के साथ प्रभावी ढंग से बातचीत करें।
- मौजूदा कोड, निम्न-स्तरीय या उच्च-प्रदर्शन वाले काम / ऐप्स के साथ मूल को एकीकृत करें।
- ...
कुछ अन्य जानकारी:
- कोर डेवलपर्स: स्टीफन बेहनेल, रॉबर्ट ब्रैडशॉ, लिसेंड्रो डालसिन, मार्क फ्लोरिसन, विट्जा मकारोव, डैग सेवरे सेलजेबोटन।
- भंडार: https://github.com/cython/cython
- मुखपृष्ठ: https://cython.org
- लाइसेंस: अपाचे लाइसेंस 2.0
आप pip . के माध्यम से साइथन को आसानी से कर सकते हैं
Python is slow
पायथन कोड की तुलना में, आपको प्रत्येक चर में प्रकार की जानकारी जोड़ने की आवश्यकता है। आमतौर पर, एक पायथन चर घोषित करने के लिए, बहुत सरल:
parallel programming
साइथन के साथ, आपको उस चर के लिए प्रकार जोड़ना होगा:
जावास्क्रिप्ट क्रेडिट कार्ड सत्यापन
asynchronous programming
सी की तरह, साइथन में एक चर के लिए प्रकार की घोषणा की आवश्यकता होती है।
साइथन में प्रकार
साइथन का उपयोग करते समय, चर और कार्यों के लिए दो अलग-अलग बिंदु होते हैं।
चर के लिए:
Cython
ये सभी प्रकार C/C++ से व्युत्पन्न हैं।
समारोह के लिए:
pip install cython
साथ में:
- def: फंक्शन प्योर पायथन, जिसे केवल पायथन से बुलाया जाता है।
- cdef: साइथन केवल कार्य करता है। केवल साइथन से बुलाया गया।
- सीपीडीएफ: सी और पायथन फ़ंक्शन। सी और पायथन से बुलाया जा सकता है।
साइथन के साथ अपने कोड को कैसे तेज करें
सबसे पहले, मैं फॉर-लूप के साथ एक शुद्ध पायथन कोड बनाऊंगा।
x = 1
जो मैंने ऊपर समझा है उसे लागू करते हुए, मैं साइथन में एक अर्थ के साथ कोड लिखूंगा:
क्रोम में जीमेल अनुत्तरदायी
cdef int x = 1
साइथन को कोड करते समय, सुनिश्चित करें कि आपके सभी चर सेट हैं।
इसके बाद, हमें साइथन -> सी कोड से संकलित करने के लिए एक फाइल बनाने की जरूरत है:
cdef int a, b, c cdef char *s cdef float x = 0.5 (single precision) cdef double x = 60.4 (double precision) cdef list images cdef dict user cdef object card_deck
डालने के बाद |_+_|और |_+_|dir के साथ, हम संकलन करना शुरू करते हैं:
def function1... cdef function2... cpdef function2...
नतीजा:
#run_test_python.py def test_python(x): y = 1 for i in range(1, x+1): y *= i return y
आप इस फ़ोल्डर में देखेंगे जिसमें सी कोड चलाने के लिए आवश्यक सभी फाइलें हैं। यदि आप उत्सुक हैं कि अन्य साइथन कोड किस सी कोड में संकलित होगा, तो आप उस फ़ाइल को देखने के लिए कैट कर सकते हैं:
#run_test_cython.pyx cpdef int test_cython(int x): cdef int y = 1 cdef int i for i in range(1, x+1): y *= i return y
चलो, सी कोड की शक्ति दिखाने का समय आ गया है। निम्नलिखित कोड पायथन शुद्ध और साइथन की गति की तुलना करता है:
# setup.py from distutils.core import setup from Cython.Build import cythonize setup(ext_modules = cythonize('run_test_cython.pyx'))
चलने के बाद परिणाम |_+_|
run_test_cython.pyx
मेरे परीक्षण के लिए वर्तमान डिवाइस कॉन्फ़िगरेशन के साथ:
- सीपीयू: इंटेल® कोर ™ i5-4460 सीपीयू @ 3.20GHz × 4
- राम: 8जी
आसानी से देखने के लिए परिणाम तालिका में भरें:
प्रतिक्रिया बूटस्ट्रैप मोडल उदाहरण
संख्यापायथन समयसाइथन समय गतिगति
|_+_|- एक अकल्पनीय संख्या की तरह लगता है
जाहिर है, साइथन आपको बहुत अच्छा प्रदर्शन देता है। यदि आप अपना कोड सुधारना चाहते हैं तो यह भी एक व्यवहार्य समाधान है।
#पायथन #साइथन