सीपीथॉन

CPython Python (प्रोग्रामिंग लैंग्वेज) का संदर्भ कार्यान्वयन है। C (प्रोग्रामिंग लैंग्वेज) और पायथन में लिखा गया, CPython, Python भाषा का डिफ़ॉल्ट और सबसे व्यापक रूप से उपयोग किया जाने वाला कार्यान्वयन है।

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

डिजाइन
CPython की एक विशेष विशेषता यह है कि यह प्रत्येक CPython दुभाषिया प्रक्रिया (कंप्यूटिंग) पर एक वैश्विक दुभाषिया लॉक (GIL) का उपयोग करता है, जिसका अर्थ है कि एक ही प्रक्रिया के भीतर, किसी एक समय में केवल एक थ्रेड Python bytecode को संसाधित कर सकता है। इसका मतलब यह नहीं है कि मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर) का कोई मतलब नहीं है; सबसे आम मल्टीथ्रेडिंग परिदृश्य वह है जहां थ्रेड (कंप्यूटिंग) ज्यादातर बाहरी प्रक्रियाओं के पूरा होने की प्रतीक्षा कर रहे हैं।

यह तब हो सकता है जब कई थ्रेड्स अलग-अलग क्लाइंट्स को सर्विस दे रहे हों। हो सकता है कि एक थ्रेड क्लाइंट के जवाब का इंतज़ार कर रहा हो, और दूसरा थ्रेड डेटाबेस क्वेरी के निष्पादित होने का इंतज़ार कर रहा हो, जबकि तीसरा थ्रेड वास्तव में Python कोड को प्रोसेस कर रहा हो।

हालाँकि, GIL का मतलब यह है कि CPython उन प्रक्रियाओं के लिए उपयुक्त नहीं है जो Python कोड में CPU-गहन एल्गोरिदम को लागू करते हैं जो संभावित रूप से कई कोर में वितरित किए जा सकते हैं।

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

पायथन कोड की समवर्ती केवल एक मल्टीटास्किंग ऑपरेटिंग सिस्टम द्वारा प्रबंधित अलग-अलग CPython दुभाषिया प्रक्रियाओं के साथ प्राप्त की जा सकती है। यह समानांतर कंप्यूटिंग के बीच संचार को जटिल बनाता है, हालांकि मल्टीप्रोसेसिंग मॉड्यूल इसे कुछ हद तक कम करता है; इसका मतलब यह है कि समवर्ती पायथन-कोड निष्पादन से वास्तव में लाभान्वित होने वाले अनुप्रयोगों को सीमित मात्रा में ओवरहेड (कंप्यूटिंग) के साथ लागू किया जा सकता है।

GIL की उपस्थिति CPython के कार्यान्वयन को सरल बनाती है, और बहु-थ्रेडेड अनुप्रयोगों को लागू करना आसान बनाती है जो समवर्ती पायथन कोड निष्पादन से लाभान्वित नहीं होते हैं। हालाँकि, GIL के बिना, मल्टीप्रोसेसिंग ऐप्स को यह सुनिश्चित करना चाहिए कि सभी सामान्य कोड थ्रेड सुरक्षित हैं।

हालाँकि GIL को खत्म करने के लिए कई प्रस्ताव दिए गए हैं, आम सहमति यह रही है कि ज्यादातर मामलों में, GIL के फायदे नुकसान से अधिक हैं; कुछ मामलों में जहां GIL एक अड़चन है, एप्लिकेशन को मल्टीप्रोसेसिंग संरचना के आसपास बनाया जाना चाहिए।

अनलादेन निगल
Unladen Swallow CPython की एक अनुकूलन शाखा थी, जिसका उद्देश्य पूरी तरह से संगत और काफी तेज होना था। इसका उद्देश्य CPython की कस्टम आभासी मशीन को जस्ट-इन-टाइम संकलन | समय-समय पर संकलन LLVM का उपयोग करके बनाया गया है।

परियोजना ने CPython पर पांच के एक कारक द्वारा गति में सुधार का लक्ष्य बताया था; यह लक्ष्य पूरा नहीं हुआ था। परियोजना को Google द्वारा प्रायोजित किया गया था, और परियोजना के मालिक, थॉमस वाउटर्स, जेफरी यास्किन और कॉलिन विंटर, पूर्णकालिक Google कर्मचारी हैं; हालाँकि, अधिकांश परियोजना योगदानकर्ता Google के कर्मचारी नहीं थे। Unladen Swallow को Google Developers पर होस्ट किया गया था। पायथन भाषा के बारे में कई चीजों की तरह, अनलाडेन निगलना नाम एक मोंटी पायथन संदर्भ है, विशेष रूप [[मोंटी अजगर एंड द होली ग्रेल]] में अनलडेन स्वैलोज़ के एयरस्पीड वेग के बारे में मजाक के लिए।

हालांकि यह सभी प्रकाशित लक्ष्यों से कम हो गया, अनलाडेन निगल ने कुछ कोड का उत्पादन किया जो मुख्य पायथन कार्यान्वयन में जोड़ा गया, जैसे कि cPickle मॉड्यूल में सुधार। जुलाई 2010 में, कुछ पर्यवेक्षकों ने अनुमान लगाया कि 2009 की चौथी तिमाही के मील के पत्थर को अभी तक जारी नहीं किया गया था कि क्या परियोजना मर चुकी थी या मर रही थी। Unladen की मेलिंग सूची पर यातायात जनवरी 2010 में 500 संदेशों से घटकर सितंबर 2010 में 10 से कम हो गया था। यह भी बताया गया है कि Unladen ने Google की फंडिंग खो दी है। नवंबर 2010 में, मुख्य डेवलपर्स में से एक ने घोषणा की कि जेफरी और मुझे Google के लिए उच्च महत्व की अन्य परियोजनाओं पर खींच लिया गया है। 2009 Q4 विकास शाखा 26 जनवरी 2010 को बनाई गई थी, लेकिन वेबसाइट पर कोई विज्ञापन नहीं किया गया था। इसके अलावा, लंबी अवधि की योजनाओं के बारे में, और जैसा कि परियोजना ने पायथन 2.7 रिलीज को याद किया, एक पायथन संवर्द्धन प्रस्ताव (पीईपी) स्वीकार कर लिया गया, जिसने पायथन के आधिकारिक रिपॉजिटरी (संस्करण नियंत्रण) की एक विशेष py3k-jit शाखा में Unladen Swallow के विलय का प्रस्ताव दिया। जुलाई 2010 तक यह काम चल रहा था। इस विलय में कुछ समय लग सकता था, क्योंकि Unladen Swallow मूल रूप से Python 2.6 पर आधारित था जिसके साथ Python 3 ने संगतता तोड़ दी (अधिक विवरण के लिए Python 3000 देखें)। हालाँकि, बाद में PEP को वापस ले लिया गया था।

2011 की शुरुआत में, यह स्पष्ट हो गया कि परियोजना को रोक दिया गया था।

अनलादेन निगल रिलीज इतिहास

 * 2009 Q1
 * 2009 उल्टी
 * 2009 Q3: स्मृति उपयोग कम करें, गति में सुधार करें

वितरण
आधिकारिक तौर पर समर्थित टियर-1 प्लेटफॉर्म खिड़कियाँ, लिनक्स और मैकओएस (और रास्पबेरी पाई ओएस, और निचले स्तर पर s390x के लिए लिनक्स) हैं।

ऐसे और भी प्लेटफ़ॉर्म हैं जिनमें कार्यशील कार्यान्वयन शामिल हैं: • AIX
 * यूनिक्स की तरह:

• BSD

• Darwin

• FreeBSD

• HP-UX

• illumos

• Linux

• macOS

• NetBSD

• OpenBSD

• Plan 9

• Solaris

• Tru64 • Android
 * विशेष और एम्बेडेड:

• Apple iOS (support for outdated Python 3.6 and 2.7 available)

• BlackBerry 10

• GP2X

• iPodLinux

• Nintendo DS

• Nintendo GameCube

• Symbian OS Series60

• Nokia 770 Internet Tablet

• Nokia N800

• Nokia N810

• Nokia N900

• Openmoko

• Palm OS

• PlayStation 2

• PlayStation 3 (FreeBSD)

• Psion

• QNX

• Sharp Zaurus

• Xbox/XBMC

• VxWorks • AROS
 * अन्य:

• OS/390

• Windows Vista and later

• z/OS पीईपी 11 पायथन सॉफ्टवेयर फाउंडेशन द्वारा सीपीथॉन में समर्थित नहीं होने वाले प्लेटफार्मों को सूचीबद्ध करता है। इन प्लेटफार्मों को अभी भी बाहरी बंदरगाहों द्वारा समर्थित किया जा सकता है। इन बंदरगाहों में शामिल हैं:

• AtheOS (unsupported since 2.6)

• BeOS (unsupported since 2.6)

• DOS (unsupported since 2.0)

• IRIX 4 (unsupported since 2.3)

• IRIX 5 and later (unsupported since 3.2, 3.7)

• Mac OS 9 (unsupported since 2.4)

• MINIX (unsupported since 2.3)

• OpenVMS (unsupported since 3.3)

• OS/2 (unsupported since 3.3)

• RISC OS (unsupported since 3.0)

• Windows XP (unsupported since 3.5)

• Windows 2000 (unsupported since 3.3)

• Windows 3.x (unsupported since 2.0)

• Windows 9x (unsupported since 2.6)

• Windows NT4 (unsupported since 2.6) बाहरी पोर्ट जो कि Python Software Foundation के CPython के आधिकारिक संस्करण में एकीकृत नहीं हैं, इसकी मुख्य विकास साइट के लिंक के साथ, अक्सर प्लेटफ़ॉर्म-विशिष्ट कार्यात्मकताओं के लिए अतिरिक्त मॉड्यूल शामिल होते हैं, जैसे PSP के लिए ग्राफिक्स और ध्वनि API और S60 के लिए SMS और कैमरा API। इन बंदरगाहों में शामिल हैं:

• Amiga: AmigaPython

• IBM i: iSeriesPython

• DOS using DJGPP: PythonD

• MorphOS: Python 2 and 3

• PlayStation Portable: Stackless Python for PSP

• Symbian OS: Python for S60

• Windows CE/Pocket PC: Python Windows CE port

• OpenVMS: Ports of Python 3.x are maintained by VSI

एंटरप्राइज़ लिनक्स
ये पायथन संस्करण वर्तमान में समर्थित एंटरप्राइज़ लिनक्स वितरण के साथ वितरित किए गए हैं। तालिका में पायथन की समर्थन स्थिति का तात्पर्य पायथन कोर टीम से समर्थन से है, न कि वितरण अनुरक्षक से।

विकल्प
CPython कई उत्पादन-गुणवत्ता वाले पायथन (प्रोग्रामिंग भाषा) #कार्यान्वयनों में से एक है: Java जावा वर्चुअल मशीनJVM) के लिए Java (प्रोग्रामिंग भाषा) में लिखा गया Jython, PyPy#RPython में लिखा गया PyPy और C में अनुवादित, और IronPython, जो सी शार्प (प्रोग्रामिंग लैंग्वेज) में लिखा गया है। सामान्य भाषा अवसंरचना के लिए सी #। कई प्रयोगात्मक कार्यान्वयन भी हैं।