खोज…


टिप्पणियों

साइथन क्या है?

साइथन प्रोग्रामिंग भाषा पायथन को सी-जैसे स्थिर टाइपिंग, सीधे सी फ़ंक्शन को कॉल करने की क्षमता और कई अन्य विशेषताओं से समृद्ध करती है। यह पायथन जैसे सिंटैक्स का उपयोग करते हुए सी-स्तर के प्रदर्शन तक पहुंचने की अनुमति देता है।

यह कैसे काम करता है?

साइथन कोड को सी या सी ++ कोड बनाने के लिए साइथन सोर्स-टू-सोर्स कंपाइलर का उपयोग करके संकलित किया जाता है, जिसे बदले में सी कंपाइलर का उपयोग करके संकलित किया जा सकता है। यह उन एक्सटेंशनों को बनाने की अनुमति देता है जिन्हें पायथन या निष्पादन योग्य से आयात किया जा सकता है।

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

अपने कोड को गति देने के लिए मैं इसका उपयोग कैसे करूं?

एक सामान्य उपयोग का मामला, जब साइथन का उपयोग करके किसी प्रोग्राम को गति देने की कोशिश की जाती है, तो कोड को प्रोफाइल करना और संकलित महंगा भागों को संकलित साइथन मॉड्यूल को स्थानांतरित करना है। यह कोड के थोक के लिए पायथन सिंटैक्स को बनाए रखने और स्पीडअप को लागू करने की अनुमति देता है जहां इसकी सबसे अधिक आवश्यकता होती है।

साइथन को स्थापित करना

साइथन का उपयोग करने के लिए दो चीजों की cython होती है। cython पैकेज में ही, जिसमें cython स्रोत-से-स्रोत कंपाइलर और साइथन इंटरफेस कई सी और पायथन लाइब्रेरी (उदाहरण के लिए खस्ता) हैं। cython कंपाइलर द्वारा उत्पन्न सी कोड को संकलित करने के लिए, एक सी कंपाइलर की आवश्यकता होती है।

चरण 1: साइथन स्थापित करना

प्रणाली अज्ञेय

साइथन को कई सिस्टम एग्नोस्टिक पैकेज मैनेजमेंट सिस्टम के साथ स्थापित किया जा सकता है। इसमें शामिल है:

  1. पाइप या easy_install के माध्यम से PyPI :

    $ pip install cython
    $ easy_install cython
    
  2. कॉन्डा का उपयोग कर एनाकोंडा :

    $ conda install cython
    
  3. Enpkg पैकेज प्रबंधक का उपयोग करके चंदवा को उत्साहित किया:

    $ enpkg cython
    

इसके अलावा सोर्स कोड को जीथब से डाउनलोड किया जा सकता है और मैन्युअल रूप से इंस्टॉल किया जा सकता है:

$ python setup.py install

उबंटू, डेबियन

उबंटू के लिए पैकेज cython और cython3 उपलब्ध हैं। ध्यान दें कि ये ऊपर उल्लिखित अधिष्ठापन विकल्पों की तुलना में एक पुराना संस्करण प्रदान करते हैं।

$ apt-get install cython cython3

खिड़कियाँ

विंडोज के लिए, एक .whl फ़ाइल जिसे पाइप का उपयोग करके इंस्टॉल किया जा सकता है, एक तृतीय पक्ष द्वारा प्रदान की जाती है। विंडोज पर .whl फ़ाइल स्थापित करने का विवरण यहां पाया जा सकता है


चरण 2: एक सी संकलक स्थापित करना

साइथन द्वारा उत्पन्न सी फाइलों को संकलित करने के लिए, सी और सी ++ के लिए एक कंपाइलर की आवश्यकता होती है। Gcc संकलक की सिफारिश की जाती है और इसे निम्नानुसार स्थापित किया जा सकता है।

उबंटू, डेबियन

build-essential पैकेज में वह सब कुछ होता है जिसकी जरूरत होती है। इसका उपयोग कर रिपॉजिटरी से स्थापित किया जा सकता है:

$ sudo apt-get install build-essential

मैक

XCode डेवलपर टूल में कंपाइलर की तरह एक gcc होता है।

खिड़कियाँ

MinGW (विंडोज के लिए मिनिमलिस्ट जीएनयू) में जीसीसी का विंडोज संस्करण है। विजुअल स्टूडियो के कंपाइलर का भी इस्तेमाल किया जा सकता है।

नमस्ते दुनिया

साइथॉन pyx फ़ाइल को C कोड ( cythonized ) में अनुवादित करने की आवश्यकता है और इसे पायथन से उपयोग करने से पहले संकलित किया जाना चाहिए। एक सामान्य दृष्टिकोण एक विस्तार मॉड्यूल बनाना है जो तब पायथन कार्यक्रम में आयात किया जाता है।

कोड

इस उदाहरण के लिए हम तीन फाइलें बनाते हैं:

  • hello.pyx में Cython कोड है।
  • test.py एक Python स्क्रिप्ट है जो हैलो एक्सटेंशन का उपयोग करता है।
  • setup.py का उपयोग Cython कोड को संकलित करने के लिए किया जाता है।

hello.pyx

from libc.math cimport pow

cdef double square_and_add (double x):
    """Compute x^2 + x as double.

    This is a cdef function that can be called from within
    a Cython program, but not from Python.
    """
    return pow(x, 2.0) + x

cpdef print_result (double x):
    """This is a cpdef function that can be called from Python."""
    print("({} ^ 2) + {} = {}".format(x, x, square_and_add(x)))

test.py

# Import the extension module hello.
import hello

# Call the print_result method 
hello.print_result(23.0)

setup.py

from distutils.core import Extension, setup
from Cython.Build import cythonize

# define an extension that will be cythonized and compiled
ext = Extension(name="hello", sources=["hello.pyx"])
setup(ext_modules=cythonize(ext))

संकलन

इसके द्वारा कोड का अनुवाद करने के लिए cython hello.pyx का उपयोग करके और फिर इसे gcc का उपयोग करके संकलित किया जा सकता है। एक आसान तरीका यह है कि डिस्टल्यूट को इससे निपटने दिया जाए:

$ ls
hello.pyx  setup.py  test.py
$ python setup.py build_ext --inplace
$ ls
build  hello.c  hello.cpython-34m.so  hello.pyx  setup.py  test.py

साझा किए गए ऑब्जेक्ट (.so) फ़ाइल को पायथन से आयात और उपयोग किया जा सकता है, इसलिए अब हम test.py चला सकते हैं:

$ python test.py
(23.0 ^ 2) + 23.0 = 552.0 


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow