सीपीथॉन: Difference between revisions
(Created page with "{{short description|Python reference implementation}} {{Distinguish|Cython}} {{multiple issues| {{cleanup rewrite|date=January 2020}} {{Primary sources|date=November 2010}} {{...") |
No edit summary |
||
| Line 1: | Line 1: | ||
{{short description|Python reference implementation}} | {{short description|Python reference implementation}} | ||
{{Distinguish|Cython}} | {{Distinguish|Cython}} | ||
{{Infobox software | {{Infobox software | ||
| name = CPython | | name = CPython | ||
| Line 28: | Line 22: | ||
CPython Python (प्रोग्रामिंग लैंग्वेज) का [[संदर्भ कार्यान्वयन]] है। C (प्रोग्रामिंग लैंग्वेज) और पायथन में लिखा गया, CPython, Python भाषा का डिफ़ॉल्ट और सबसे व्यापक रूप से उपयोग किया जाने वाला कार्यान्वयन है। | CPython Python (प्रोग्रामिंग लैंग्वेज) का [[संदर्भ कार्यान्वयन]] है। C (प्रोग्रामिंग लैंग्वेज) और पायथन में लिखा गया, CPython, Python भाषा का डिफ़ॉल्ट और सबसे व्यापक रूप से उपयोग किया जाने वाला कार्यान्वयन है। | ||
CPython को | CPython को [[दुभाषिया (कंप्यूटिंग)]] और [[संकलक]] दोनों के रूप में परिभाषित किया जा सकता है क्योंकि यह व्याख्या करने से पहले पायथन कोड को [[बाईटकोड]] में संकलित करता है। इसमें सी सहित कई भाषाओं के साथ [[विदेशी फ़ंक्शन इंटरफ़ेस]] है, जिसमें पायथन के अलावा किसी अन्य भाषा में स्पष्ट रूप से [[भाषा बंधन]] लिखनी चाहिए। | ||
== डिजाइन == | == डिजाइन == | ||
CPython की | CPython की विशेष विशेषता यह है कि यह प्रत्येक CPython दुभाषिया [[प्रक्रिया (कंप्यूटिंग)]] पर वैश्विक दुभाषिया लॉक (GIL) का उपयोग करता है, जिसका अर्थ है कि ही प्रक्रिया के भीतर, किसी समय में केवल थ्रेड Python bytecode को संसाधित कर सकता है।<ref>{{cite web|url=https://docs.python.org/3/c-api/init.html |title=Initialization, Finalization, and Threads |publisher= Python v3.8.3 documentation |access-date=2020-06-04}}</ref> इसका मतलब यह नहीं है कि [[मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर)]] का कोई मतलब नहीं है; सबसे आम मल्टीथ्रेडिंग परिदृश्य वह है जहां [[थ्रेड (कंप्यूटिंग)]] ज्यादातर बाहरी प्रक्रियाओं के पूरा होने की प्रतीक्षा कर रहे हैं। | ||
यह तब हो सकता है जब कई थ्रेड्स अलग-अलग क्लाइंट्स को सर्विस दे रहे हों। हो सकता है कि | यह तब हो सकता है जब कई थ्रेड्स अलग-अलग क्लाइंट्स को सर्विस दे रहे हों। हो सकता है कि थ्रेड क्लाइंट के जवाब का इंतज़ार कर रहा हो, और दूसरा थ्रेड [[डेटाबेस]] क्वेरी के निष्पादित होने का इंतज़ार कर रहा हो, जबकि तीसरा थ्रेड वास्तव में Python कोड को प्रोसेस कर रहा हो। | ||
हालाँकि, GIL का मतलब यह है कि CPython उन प्रक्रियाओं के लिए उपयुक्त नहीं है जो Python कोड में CPU-गहन एल्गोरिदम को लागू करते हैं जो संभावित रूप से कई कोर में वितरित किए जा सकते हैं। | हालाँकि, GIL का मतलब यह है कि CPython उन प्रक्रियाओं के लिए उपयुक्त नहीं है जो Python कोड में CPU-गहन एल्गोरिदम को लागू करते हैं जो संभावित रूप से कई कोर में वितरित किए जा सकते हैं। | ||
वास्तविक दुनिया के अनुप्रयोगों में, ऐसी स्थितियाँ जहाँ GIL | वास्तविक दुनिया के अनुप्रयोगों में, ऐसी स्थितियाँ जहाँ GIL महत्वपूर्ण अड़चन है, काफी दुर्लभ हैं। ऐसा इसलिए है क्योंकि पायथन स्वाभाविक रूप से धीमी भाषा है और आमतौर पर इसका उपयोग सीपीयू-गहन या समय-संवेदनशील संचालन के लिए नहीं किया जाता है। पायथन आमतौर पर शीर्ष स्तर पर उपयोग किया जाता है और विशिष्ट कार्यों को करने के लिए पुस्तकालयों में कार्यों को बुलाता है। इन पुस्तकालयों को आम तौर पर पायथन में नहीं लिखा जाता है, और इन अंतर्निहित प्रक्रियाओं में से किसी को कॉल करने के दौरान किसी अन्य थ्रेड में पायथन कोड निष्पादित किया जा सकता है। सीपीयू-गहन कार्य करने के लिए बुलाए जाने वाले गैर-पायथन पुस्तकालय जीआईएल के अधीन नहीं हैं और बिना किसी प्रतिबंध के कई प्रोसेसर पर कई थ्रेड्स को समवर्ती रूप से निष्पादित कर सकते हैं। | ||
पायथन कोड की समवर्ती केवल | पायथन कोड की समवर्ती केवल [[मल्टीटास्किंग ऑपरेटिंग सिस्टम]] द्वारा प्रबंधित अलग-अलग CPython दुभाषिया प्रक्रियाओं के साथ प्राप्त की जा सकती है। यह [[समानांतर कंप्यूटिंग]] के बीच संचार को जटिल बनाता है, हालांकि मल्टीप्रोसेसिंग मॉड्यूल इसे कुछ हद तक कम करता है; इसका मतलब यह है कि समवर्ती पायथन-कोड निष्पादन से वास्तव में लाभान्वित होने वाले अनुप्रयोगों को सीमित मात्रा में [[ओवरहेड (कंप्यूटिंग)]] के साथ लागू किया जा सकता है। | ||
GIL की उपस्थिति CPython के कार्यान्वयन को सरल बनाती है, और बहु-थ्रेडेड अनुप्रयोगों को लागू करना आसान बनाती है जो समवर्ती पायथन कोड निष्पादन से लाभान्वित नहीं होते हैं। हालाँकि, GIL के बिना, मल्टीप्रोसेसिंग ऐप्स को यह सुनिश्चित करना चाहिए कि सभी सामान्य कोड थ्रेड सुरक्षित हैं। | GIL की उपस्थिति CPython के कार्यान्वयन को सरल बनाती है, और बहु-थ्रेडेड अनुप्रयोगों को लागू करना आसान बनाती है जो समवर्ती पायथन कोड निष्पादन से लाभान्वित नहीं होते हैं। हालाँकि, GIL के बिना, मल्टीप्रोसेसिंग ऐप्स को यह सुनिश्चित करना चाहिए कि सभी सामान्य कोड थ्रेड सुरक्षित हैं। | ||
हालाँकि GIL को खत्म करने के लिए कई प्रस्ताव दिए गए हैं, आम सहमति यह रही है कि ज्यादातर मामलों में, GIL के फायदे नुकसान से अधिक हैं; कुछ मामलों में जहां GIL | हालाँकि GIL को खत्म करने के लिए कई प्रस्ताव दिए गए हैं, आम सहमति यह रही है कि ज्यादातर मामलों में, GIL के फायदे नुकसान से अधिक हैं; कुछ मामलों में जहां GIL अड़चन है, एप्लिकेशन को मल्टीप्रोसेसिंग संरचना के आसपास बनाया जाना चाहिए। | ||
== इतिहास == | == इतिहास == | ||
| Line 50: | Line 44: | ||
=== अनलादेन निगल === | === अनलादेन निगल === | ||
Unladen Swallow CPython की | Unladen Swallow CPython की अनुकूलन शाखा थी, जिसका उद्देश्य पूरी तरह से संगत और काफी तेज होना था। इसका उद्देश्य CPython की कस्टम [[आभासी मशीन]] को जस्ट-इन-टाइम संकलन | [[समय-समय पर संकलन]] [[LLVM]] का उपयोग करके बनाया गया है। | ||
परियोजना ने CPython पर पांच के | परियोजना ने CPython पर पांच के कारक द्वारा गति में सुधार का लक्ष्य बताया था;<ref>{{cite web|last=Paul |first=Ryan |url=https://arstechnica.com/open-source/news/2009/03/google-launches-project-to-boost-python-performance-by-5x.ars |title=Ars Technica report on Unladen Swallow goals |publisher=Arstechnica.com |date=2009-03-26 |access-date=2011-08-19}}</ref> यह लक्ष्य पूरा नहीं हुआ था।<ref name="PEP3146">{{cite web | url=https://www.python.org/dev/peps/pep-3146/ | title=PEP 3146 - Merging Unladen Swallow into CPython | first1=Collin |last1=Winter | last2= Yasskin | first2= Jeffrey | last3= Kleckner | first3= Reid | date=2010-03-17 | publisher=Python.org}}</ref> | ||
परियोजना को [[Google]] द्वारा प्रायोजित किया गया था, और परियोजना के मालिक, थॉमस वाउटर्स, जेफरी यास्किन और कॉलिन विंटर, पूर्णकालिक Google कर्मचारी हैं; हालाँकि, अधिकांश परियोजना योगदानकर्ता Google के कर्मचारी नहीं थे।<ref>{{cite web| url=https://code.google.com/p/unladen-swallow/people/list | title=People working on Unladen Swallow| url-status=dead| archive-url=https://web.archive.org/web/20151029092746/https://code.google.com/p/unladen-swallow/people/list |archive-date=2015-10-29 |access-date=2019-08-08}}</ref> Unladen Swallow को [[Google Developers]] पर होस्ट किया गया था।<ref>{{cite web|url=https://code.google.com/p/unladen-swallow/ |title=Unladen Swallow project page |access-date=2011-08-19}}</ref> | परियोजना को [[Google]] द्वारा प्रायोजित किया गया था, और परियोजना के मालिक, थॉमस वाउटर्स, जेफरी यास्किन और कॉलिन विंटर, पूर्णकालिक Google कर्मचारी हैं; हालाँकि, अधिकांश परियोजना योगदानकर्ता Google के कर्मचारी नहीं थे।<ref>{{cite web| url=https://code.google.com/p/unladen-swallow/people/list | title=People working on Unladen Swallow| url-status=dead| archive-url=https://web.archive.org/web/20151029092746/https://code.google.com/p/unladen-swallow/people/list |archive-date=2015-10-29 |access-date=2019-08-08}}</ref> Unladen Swallow को [[Google Developers]] पर होस्ट किया गया था।<ref>{{cite web|url=https://code.google.com/p/unladen-swallow/ |title=Unladen Swallow project page |access-date=2011-08-19}}</ref> | ||
पायथन भाषा के बारे में कई चीजों की तरह, अनलाडेन [[निगलना]] नाम | पायथन भाषा के बारे में कई चीजों की तरह, अनलाडेन [[निगलना]] नाम मोंटी पायथन संदर्भ है, विशेष रूप [[[[मोंटी अजगर]] एंड द होली ग्रेल]] में अनलडेन स्वैलोज़ के एयरस्पीड वेग के बारे में मजाक के लिए। | ||
हालांकि यह सभी प्रकाशित लक्ष्यों से कम हो गया, अनलाडेन निगल ने कुछ कोड का उत्पादन किया जो मुख्य पायथन कार्यान्वयन में जोड़ा गया, जैसे कि cPickle मॉड्यूल में सुधार।<ref>{{Cite web|url=https://bugs.python.org/issue9410|title=Issue 9410: Add Unladen Swallow's optimizations to Python 3's pickle. - Python tracker|website=bugs.python.org|access-date=2019-08-08}}</ref> | हालांकि यह सभी प्रकाशित लक्ष्यों से कम हो गया, अनलाडेन निगल ने कुछ कोड का उत्पादन किया जो मुख्य पायथन कार्यान्वयन में जोड़ा गया, जैसे कि cPickle मॉड्यूल में सुधार।<ref>{{Cite web|url=https://bugs.python.org/issue9410|title=Issue 9410: Add Unladen Swallow's optimizations to Python 3's pickle. - Python tracker|website=bugs.python.org|access-date=2019-08-08}}</ref> | ||
जुलाई 2010 में, कुछ पर्यवेक्षकों ने अनुमान लगाया कि 2009 की चौथी तिमाही के मील के पत्थर को अभी तक जारी नहीं किया गया था कि क्या परियोजना मर चुकी थी या मर रही थी।<ref>{{cite web|url=http://groups.google.com/group/comp.lang.python/browse_thread/thread/69f85cadb424a1d4/bdf73a28f3f770cb?lnk=gst&q=unladen+swallow#bdf73a28f3f770cb |title=Message on comp.lang.python |access-date=2011-08-19}}</ref> Unladen की मेलिंग सूची पर यातायात जनवरी 2010 में 500 संदेशों से घटकर सितंबर 2010 में 10 से कम हो गया था।<ref>{{cite web|url=http://groups.google.com/group/unladen-swallow/about?hl=en |title=Unladen Swallow | Google Groups |access-date=2011-08-19}}</ref> यह भी बताया गया है कि Unladen ने Google की फंडिंग खो दी है।<ref>{{cite web|url=https://www.reddit.com/r/Python/comments/cilk0/anyone_know_whats_going_on_with_unladen_swallow/c0su1wt |title=reddit post by an Unladen committer |publisher=Reddit.com |date=2010-06-24 |access-date=2011-08-19}}</ref> नवंबर 2010 में, मुख्य डेवलपर्स में से | जुलाई 2010 में, कुछ पर्यवेक्षकों ने अनुमान लगाया कि 2009 की चौथी तिमाही के मील के पत्थर को अभी तक जारी नहीं किया गया था कि क्या परियोजना मर चुकी थी या मर रही थी।<ref>{{cite web|url=http://groups.google.com/group/comp.lang.python/browse_thread/thread/69f85cadb424a1d4/bdf73a28f3f770cb?lnk=gst&q=unladen+swallow#bdf73a28f3f770cb |title=Message on comp.lang.python |access-date=2011-08-19}}</ref> Unladen की मेलिंग सूची पर यातायात जनवरी 2010 में 500 संदेशों से घटकर सितंबर 2010 में 10 से कम हो गया था।<ref>{{cite web|url=http://groups.google.com/group/unladen-swallow/about?hl=en |title=Unladen Swallow | Google Groups |access-date=2011-08-19}}</ref> यह भी बताया गया है कि Unladen ने Google की फंडिंग खो दी है।<ref>{{cite web|url=https://www.reddit.com/r/Python/comments/cilk0/anyone_know_whats_going_on_with_unladen_swallow/c0su1wt |title=reddit post by an Unladen committer |publisher=Reddit.com |date=2010-06-24 |access-date=2011-08-19}}</ref> नवंबर 2010 में, मुख्य डेवलपर्स में से ने घोषणा की कि जेफरी और मुझे Google के लिए उच्च महत्व की अन्य परियोजनाओं पर खींच लिया गया है।<ref>{{cite web | url=http://groups.google.com/group/unladen-swallow/msg/bd4e6f935c23252a | first=Collin | last=Winter | title= Current status of Unladen-Swallow | date=8 November 2010 }}</ref> | ||
2009 Q4 विकास शाखा 26 जनवरी 2010 को बनाई गई थी,<ref>{{cite web|url=https://code.google.com/p/unladen-swallow/source/detail?spec=svn1164&r=1042 |title=2009 Q4 release branch creation |date=2010-01-26 |access-date=2011-08-19}}</ref> लेकिन वेबसाइट पर कोई विज्ञापन नहीं किया गया था। इसके अलावा, लंबी अवधि की योजनाओं के बारे में, और जैसा कि परियोजना ने पायथन 2.7 रिलीज को याद किया, | 2009 Q4 विकास शाखा 26 जनवरी 2010 को बनाई गई थी,<ref>{{cite web|url=https://code.google.com/p/unladen-swallow/source/detail?spec=svn1164&r=1042 |title=2009 Q4 release branch creation |date=2010-01-26 |access-date=2011-08-19}}</ref> लेकिन वेबसाइट पर कोई विज्ञापन नहीं किया गया था। इसके अलावा, लंबी अवधि की योजनाओं के बारे में, और जैसा कि परियोजना ने पायथन 2.7 रिलीज को याद किया, [[पायथन संवर्द्धन प्रस्ताव]] (पीईपी)<ref name="PEP3146"/>स्वीकार कर लिया गया, जिसने पायथन के आधिकारिक रिपॉजिटरी (संस्करण नियंत्रण) की विशेष py3k-jit शाखा में Unladen Swallow के विलय का प्रस्ताव दिया। जुलाई 2010 तक यह काम चल रहा था।<ref>{{cite web|url=http://groups.google.com/group/unladen-swallow/browse_thread/thread/be3d226079c457b1 |title=Developers focus on merge into py3k-jit |date=2010-07-13 |access-date=2011-08-19}}</ref> इस विलय में कुछ समय लग सकता था, क्योंकि Unladen Swallow मूल रूप से Python 2.6 पर आधारित था<ref>{{cite web|url=https://www.python.org/dev/peps/pep-3146/#rationale-implementation |title=Unladen Swallow baseline |publisher=Python.org |access-date=2011-08-19}}</ref> जिसके साथ Python 3 ने संगतता तोड़ दी (अधिक विवरण के लिए [[Python 3000]] देखें)। हालाँकि, बाद में PEP को वापस ले लिया गया था। | ||
2011 की शुरुआत में, यह स्पष्ट हो गया कि परियोजना को रोक दिया गया था।<ref>{{cite web|url=http://qinsb.blogspot.com/2011/03/unladen-swallow-retrospective.html|title=Unladen Swallow Retrospective | date = 26 March 2011| publisher = QINSB is not a Software Blog (qinsb.blogspot.com)| first = Reid | last = Kleckner}}</ref> | 2011 की शुरुआत में, यह स्पष्ट हो गया कि परियोजना को रोक दिया गया था।<ref>{{cite web|url=http://qinsb.blogspot.com/2011/03/unladen-swallow-retrospective.html|title=Unladen Swallow Retrospective | date = 26 March 2011| publisher = QINSB is not a Software Blog (qinsb.blogspot.com)| first = Reid | last = Kleckner}}</ref> | ||
| Line 175: | Line 169: | ||
|- | |- | ||
| Ubuntu 18.04 LTS (Bionic Beaver) | | Ubuntu 18.04 LTS (Bionic Beaver) | ||
| 2028-04<ref>{{cite web |url=https://www.serverwatch.com/server-news/canonical-extends-ubuntu-18.04-lts-linux-support-to-10-years.html|title=Ubuntu 18.04 extended to 2028|publisher=ServerWatch.com|date=2018-11-15|access-date=2019-09-09}}</ref> | | 2028-04<ref>{{cite web |url=https://www.serverwatch.com/server-news/canonical-extends-ubuntu-18.04-lts-linux-support-to-10-years.html|title=Ubuntu 18.04 extended to 2028|publisher=ServerWatch.com|date=2018-11-15|access-date=2019-09-09}}</ref> | ||
| {{Version|o|2.7}}<ref name="ubuntu-py2">{{cite web|url=https://launchpad.net/ubuntu/+source/python-defaults |title=python-defaults package : Ubuntu |publisher= Canonical Ltd. |date=2018-06-08 |access-date=2018-06-08}}</ref> | | {{Version|o|2.7}}<ref name="ubuntu-py2">{{cite web|url=https://launchpad.net/ubuntu/+source/python-defaults |title=python-defaults package : Ubuntu |publisher= Canonical Ltd. |date=2018-06-08 |access-date=2018-06-08}}</ref> | ||
| {{Version|o|3.6}}<ref name="ubuntu-py3">{{cite web|url=https://launchpad.net/ubuntu/+source/python3-defaults |title=python3-defaults package : Ubuntu |publisher= Canonical Ltd. |date=2018-06-08 |access-date=2018-06-08}}</ref> | | {{Version|o|3.6}}<ref name="ubuntu-py3">{{cite web|url=https://launchpad.net/ubuntu/+source/python3-defaults |title=python3-defaults package : Ubuntu |publisher= Canonical Ltd. |date=2018-06-08 |access-date=2018-06-08}}</ref> | ||
| Line 185: | Line 179: | ||
|- | |- | ||
| [[Debian]] 11 | | [[Debian]] 11 | ||
| 2026-06<ref name="debian.org">{{Cite web|title=Debian -- News -- Debian 11 "bullseye" released|url=https://www.debian.org/News/2021/20210814.en.html|access-date=2022-01-04|website=www.debian.org}}</ref> | | 2026-06<ref name="debian.org">{{Cite web|title=Debian -- News -- Debian 11 "bullseye" released|url=https://www.debian.org/News/2021/20210814.en.html|access-date=2022-01-04|website=www.debian.org}}</ref> | ||
| | | | ||
| {{Version|co|3.9}}<ref name="debian.org"/>{{Update after|2025|10}} | | {{Version|co|3.9}}<ref name="debian.org"/>{{Update after|2025|10}} | ||
|- | |- | ||
| Debian 10 | | Debian 10 | ||
| 2024-06<ref>{{Cite web|title=LTS - Debian Wiki|url=https://wiki.debian.org/LTS|access-date=2021-02-15|website=wiki.debian.org}}</ref> | | 2024-06<ref>{{Cite web|title=LTS - Debian Wiki|url=https://wiki.debian.org/LTS|access-date=2021-02-15|website=wiki.debian.org}}</ref> | ||
| {{Version|o|2.7}}<ref>{{Cite web|url=https://packages.debian.org/buster/python|title=Debian -- Details of package python in buster|website=packages.debian.org|access-date=2019-09-13}}</ref> | | {{Version|o|2.7}}<ref>{{Cite web|url=https://packages.debian.org/buster/python|title=Debian -- Details of package python in buster|website=packages.debian.org|access-date=2019-09-13}}</ref> | ||
| {{Version|co|3.7}}<ref>{{Cite web|url=https://www.debian.org/News/2019/20190706.en.html|title=Debian -- News -- Debian 10 "buster" released|website=www.debian.org|access-date=2019-08-09}}</ref>{{Update after|2023|06}} | | {{Version|co|3.7}}<ref>{{Cite web|url=https://www.debian.org/News/2019/20190706.en.html|title=Debian -- News -- Debian 10 "buster" released|website=www.debian.org|access-date=2019-08-09}}</ref>{{Update after|2023|06}} | ||
| Line 200: | Line 194: | ||
|- | |- | ||
| [[Red Hat Enterprise Linux]] 8 | | [[Red Hat Enterprise Linux]] 8 | ||
| 2029 | | 2029 | ||
| {{Version|o|2.7}}<ref>{{Cite web|url=https://developers.redhat.com/blog/2018/11/14/python-in-rhel-8/|title=Python in RHEL 8|date=2018-11-14|website=Red Hat Developer Blog|language=en-US|access-date=2019-05-10|archive-date=2019-05-10|archive-url=https://web.archive.org/web/20190510043548/https://developers.redhat.com/blog/2018/11/14/python-in-rhel-8/|url-status=dead}}</ref> | | {{Version|o|2.7}}<ref>{{Cite web|url=https://developers.redhat.com/blog/2018/11/14/python-in-rhel-8/|title=Python in RHEL 8|date=2018-11-14|website=Red Hat Developer Blog|language=en-US|access-date=2019-05-10|archive-date=2019-05-10|archive-url=https://web.archive.org/web/20190510043548/https://developers.redhat.com/blog/2018/11/14/python-in-rhel-8/|url-status=dead}}</ref> | ||
| {{Version|o|3.6}} | | {{Version|o|3.6}} | ||
|- | |- | ||
| Red Hat Enterprise Linux 7 | | Red Hat Enterprise Linux 7 | ||
| 2024-11-30<ref name=":0">{{Cite web|url=https://access.redhat.com/support/policy/updates/errata|title=Red Hat Enterprise Linux Life Cycle|website=Red Hat Customer Portal|language=en|access-date=2020-04-01}}</ref> | | 2024-11-30<ref name=":0">{{Cite web|url=https://access.redhat.com/support/policy/updates/errata|title=Red Hat Enterprise Linux Life Cycle|website=Red Hat Customer Portal|language=en|access-date=2020-04-01}}</ref> | ||
| {{Version|o|2.7}}<ref>{{cite web|url=https://distrowatch.com/table.php?distribution=redhat |title=DistroWatch.com: Red Hat Enterprise Linux |publisher=DistroWatch.com |date=2017-09-07 |access-date=2017-10-15}}</ref> | | {{Version|o|2.7}}<ref>{{cite web|url=https://distrowatch.com/table.php?distribution=redhat |title=DistroWatch.com: Red Hat Enterprise Linux |publisher=DistroWatch.com |date=2017-09-07 |access-date=2017-10-15}}</ref> | ||
| | | | ||
|- | |- | ||
| [[CentOS]] 8 | | [[CentOS]] 8 | ||
| 2029-05-31 | | 2029-05-31 | ||
| {{Version|o|2.7}} | | {{Version|o|2.7}} | ||
| {{Version|o|3.6}} | | {{Version|o|3.6}} | ||
|- | |- | ||
| CentOS 7 | | CentOS 7 | ||
| 2024-06-30 | | 2024-06-30 | ||
| {{Version|o|2.7}}<ref>{{cite web|url=https://distrowatch.com/table.php?distribution=centos |title=DistroWatch.com: CentOS |publisher=DistroWatch.com |date=2017-09-14 |access-date=2017-10-15}}</ref> | | {{Version|o|2.7}}<ref>{{cite web|url=https://distrowatch.com/table.php?distribution=centos |title=DistroWatch.com: CentOS |publisher=DistroWatch.com |date=2017-09-14 |access-date=2017-10-15}}</ref> | ||
| | | | ||
|- | |- | ||
| [[SuSE Linux Enterprise Server|SUSE Linux Enterprise Server]] 15 | | [[SuSE Linux Enterprise Server|SUSE Linux Enterprise Server]] 15 | ||
| 2031-07-31 | | 2031-07-31 | ||
| {{Version|o|2.7}}<ref>{{Cite web|url=https://www.suse.com/releasenotes/x86_64/SUSE-SLED/15/#Features.Other|title=Release Notes {{!}} SUSE Linux Enterprise Desktop/SUSE Linux Enterprise Workstation Extension 15 GA|website=www.suse.com|access-date=2019-08-08}}</ref> | | {{Version|o|2.7}}<ref>{{Cite web|url=https://www.suse.com/releasenotes/x86_64/SUSE-SLED/15/#Features.Other|title=Release Notes {{!}} SUSE Linux Enterprise Desktop/SUSE Linux Enterprise Workstation Extension 15 GA|website=www.suse.com|access-date=2019-08-08}}</ref> | ||
| {{Version|o|3.6}} | | {{Version|o|3.6}} | ||
|- | |- | ||
| SUSE Linux Enterprise Server 12 | | SUSE Linux Enterprise Server 12 | ||
| 2027-10-31 | | 2027-10-31 | ||
| {{Version|o|2.7}}<ref name="DistroWatch.com: openSUSE">{{cite web|url=https://distrowatch.com/table.php?distribution=suse |title=DistroWatch.com: openSUSE |publisher=DistroWatch.com |date=2017-10-14 |access-date=2017-10-15}}</ref> | | {{Version|o|2.7}}<ref name="DistroWatch.com: openSUSE">{{cite web|url=https://distrowatch.com/table.php?distribution=suse |title=DistroWatch.com: openSUSE |publisher=DistroWatch.com |date=2017-10-14 |access-date=2017-10-15}}</ref> | ||
| | | | ||
| Line 240: | Line 234: | ||
== विकल्प == | == विकल्प == | ||
CPython कई उत्पादन-गुणवत्ता वाले पायथन (प्रोग्रामिंग भाषा) #कार्यान्वयनों में से | CPython कई उत्पादन-गुणवत्ता वाले पायथन (प्रोग्रामिंग भाषा) #कार्यान्वयनों में से है: Java [[जावा वर्चुअल मशीन]]JVM) के लिए Java (प्रोग्रामिंग भाषा) में लिखा गया [[Jython]], [[PyPy]]#RPython में लिखा गया PyPy और C में अनुवादित, और [[IronPython]], जो सी शार्प (प्रोग्रामिंग लैंग्वेज) में लिखा गया है। [[सामान्य भाषा अवसंरचना]] के लिए सी #। कई प्रयोगात्मक कार्यान्वयन भी हैं।<ref>{{cite book | last = Martelli | first = Alex | author-link = Alex Martelli | title = Python in a Nutshell | publisher = [[O'Reilly Media|O'Reilly]] | year = 2006 | edition = 2nd | isbn = 978-0-596-10046-9 | pages = 5–7 }}</ref> | ||
Revision as of 15:14, 26 February 2023
| File:Python logo and wordmark.svg | |
| Original author(s) | Guido van Rossum |
|---|---|
| Developer(s) | Python core developers and the Python community, supported by the Python Software Foundation |
| Initial release | 26 January 1994 |
| Stable release | Script error: The module returned a nil value. It is supposed to return an export table.
/ Script error: The module returned a nil value. It is supposed to return an export table. |
CPython Python (प्रोग्रामिंग लैंग्वेज) का संदर्भ कार्यान्वयन है। C (प्रोग्रामिंग लैंग्वेज) और पायथन में लिखा गया, CPython, Python भाषा का डिफ़ॉल्ट और सबसे व्यापक रूप से उपयोग किया जाने वाला कार्यान्वयन है।
CPython को दुभाषिया (कंप्यूटिंग) और संकलक दोनों के रूप में परिभाषित किया जा सकता है क्योंकि यह व्याख्या करने से पहले पायथन कोड को बाईटकोड में संकलित करता है। इसमें सी सहित कई भाषाओं के साथ विदेशी फ़ंक्शन इंटरफ़ेस है, जिसमें पायथन के अलावा किसी अन्य भाषा में स्पष्ट रूप से भाषा बंधन लिखनी चाहिए।
डिजाइन
CPython की विशेष विशेषता यह है कि यह प्रत्येक CPython दुभाषिया प्रक्रिया (कंप्यूटिंग) पर वैश्विक दुभाषिया लॉक (GIL) का उपयोग करता है, जिसका अर्थ है कि ही प्रक्रिया के भीतर, किसी समय में केवल थ्रेड Python bytecode को संसाधित कर सकता है।[1] इसका मतलब यह नहीं है कि मल्टीथ्रेडिंग (कंप्यूटर आर्किटेक्चर) का कोई मतलब नहीं है; सबसे आम मल्टीथ्रेडिंग परिदृश्य वह है जहां थ्रेड (कंप्यूटिंग) ज्यादातर बाहरी प्रक्रियाओं के पूरा होने की प्रतीक्षा कर रहे हैं।
यह तब हो सकता है जब कई थ्रेड्स अलग-अलग क्लाइंट्स को सर्विस दे रहे हों। हो सकता है कि थ्रेड क्लाइंट के जवाब का इंतज़ार कर रहा हो, और दूसरा थ्रेड डेटाबेस क्वेरी के निष्पादित होने का इंतज़ार कर रहा हो, जबकि तीसरा थ्रेड वास्तव में Python कोड को प्रोसेस कर रहा हो।
हालाँकि, GIL का मतलब यह है कि CPython उन प्रक्रियाओं के लिए उपयुक्त नहीं है जो Python कोड में CPU-गहन एल्गोरिदम को लागू करते हैं जो संभावित रूप से कई कोर में वितरित किए जा सकते हैं।
वास्तविक दुनिया के अनुप्रयोगों में, ऐसी स्थितियाँ जहाँ GIL महत्वपूर्ण अड़चन है, काफी दुर्लभ हैं। ऐसा इसलिए है क्योंकि पायथन स्वाभाविक रूप से धीमी भाषा है और आमतौर पर इसका उपयोग सीपीयू-गहन या समय-संवेदनशील संचालन के लिए नहीं किया जाता है। पायथन आमतौर पर शीर्ष स्तर पर उपयोग किया जाता है और विशिष्ट कार्यों को करने के लिए पुस्तकालयों में कार्यों को बुलाता है। इन पुस्तकालयों को आम तौर पर पायथन में नहीं लिखा जाता है, और इन अंतर्निहित प्रक्रियाओं में से किसी को कॉल करने के दौरान किसी अन्य थ्रेड में पायथन कोड निष्पादित किया जा सकता है। सीपीयू-गहन कार्य करने के लिए बुलाए जाने वाले गैर-पायथन पुस्तकालय जीआईएल के अधीन नहीं हैं और बिना किसी प्रतिबंध के कई प्रोसेसर पर कई थ्रेड्स को समवर्ती रूप से निष्पादित कर सकते हैं।
पायथन कोड की समवर्ती केवल मल्टीटास्किंग ऑपरेटिंग सिस्टम द्वारा प्रबंधित अलग-अलग CPython दुभाषिया प्रक्रियाओं के साथ प्राप्त की जा सकती है। यह समानांतर कंप्यूटिंग के बीच संचार को जटिल बनाता है, हालांकि मल्टीप्रोसेसिंग मॉड्यूल इसे कुछ हद तक कम करता है; इसका मतलब यह है कि समवर्ती पायथन-कोड निष्पादन से वास्तव में लाभान्वित होने वाले अनुप्रयोगों को सीमित मात्रा में ओवरहेड (कंप्यूटिंग) के साथ लागू किया जा सकता है।
GIL की उपस्थिति CPython के कार्यान्वयन को सरल बनाती है, और बहु-थ्रेडेड अनुप्रयोगों को लागू करना आसान बनाती है जो समवर्ती पायथन कोड निष्पादन से लाभान्वित नहीं होते हैं। हालाँकि, GIL के बिना, मल्टीप्रोसेसिंग ऐप्स को यह सुनिश्चित करना चाहिए कि सभी सामान्य कोड थ्रेड सुरक्षित हैं।
हालाँकि GIL को खत्म करने के लिए कई प्रस्ताव दिए गए हैं, आम सहमति यह रही है कि ज्यादातर मामलों में, GIL के फायदे नुकसान से अधिक हैं; कुछ मामलों में जहां GIL अड़चन है, एप्लिकेशन को मल्टीप्रोसेसिंग संरचना के आसपास बनाया जाना चाहिए।
इतिहास
अनलादेन निगल
Unladen Swallow CPython की अनुकूलन शाखा थी, जिसका उद्देश्य पूरी तरह से संगत और काफी तेज होना था। इसका उद्देश्य CPython की कस्टम आभासी मशीन को जस्ट-इन-टाइम संकलन | समय-समय पर संकलन LLVM का उपयोग करके बनाया गया है।
परियोजना ने CPython पर पांच के कारक द्वारा गति में सुधार का लक्ष्य बताया था;[2] यह लक्ष्य पूरा नहीं हुआ था।[3] परियोजना को Google द्वारा प्रायोजित किया गया था, और परियोजना के मालिक, थॉमस वाउटर्स, जेफरी यास्किन और कॉलिन विंटर, पूर्णकालिक Google कर्मचारी हैं; हालाँकि, अधिकांश परियोजना योगदानकर्ता Google के कर्मचारी नहीं थे।[4] Unladen Swallow को Google Developers पर होस्ट किया गया था।[5] पायथन भाषा के बारे में कई चीजों की तरह, अनलाडेन निगलना नाम मोंटी पायथन संदर्भ है, विशेष रूप [[मोंटी अजगर एंड द होली ग्रेल]] में अनलडेन स्वैलोज़ के एयरस्पीड वेग के बारे में मजाक के लिए।
हालांकि यह सभी प्रकाशित लक्ष्यों से कम हो गया, अनलाडेन निगल ने कुछ कोड का उत्पादन किया जो मुख्य पायथन कार्यान्वयन में जोड़ा गया, जैसे कि cPickle मॉड्यूल में सुधार।[6] जुलाई 2010 में, कुछ पर्यवेक्षकों ने अनुमान लगाया कि 2009 की चौथी तिमाही के मील के पत्थर को अभी तक जारी नहीं किया गया था कि क्या परियोजना मर चुकी थी या मर रही थी।[7] Unladen की मेलिंग सूची पर यातायात जनवरी 2010 में 500 संदेशों से घटकर सितंबर 2010 में 10 से कम हो गया था।[8] यह भी बताया गया है कि Unladen ने Google की फंडिंग खो दी है।[9] नवंबर 2010 में, मुख्य डेवलपर्स में से ने घोषणा की कि जेफरी और मुझे Google के लिए उच्च महत्व की अन्य परियोजनाओं पर खींच लिया गया है।[10] 2009 Q4 विकास शाखा 26 जनवरी 2010 को बनाई गई थी,[11] लेकिन वेबसाइट पर कोई विज्ञापन नहीं किया गया था। इसके अलावा, लंबी अवधि की योजनाओं के बारे में, और जैसा कि परियोजना ने पायथन 2.7 रिलीज को याद किया, पायथन संवर्द्धन प्रस्ताव (पीईपी)[3]स्वीकार कर लिया गया, जिसने पायथन के आधिकारिक रिपॉजिटरी (संस्करण नियंत्रण) की विशेष py3k-jit शाखा में Unladen Swallow के विलय का प्रस्ताव दिया। जुलाई 2010 तक यह काम चल रहा था।[12] इस विलय में कुछ समय लग सकता था, क्योंकि Unladen Swallow मूल रूप से Python 2.6 पर आधारित था[13] जिसके साथ Python 3 ने संगतता तोड़ दी (अधिक विवरण के लिए Python 3000 देखें)। हालाँकि, बाद में PEP को वापस ले लिया गया था।
2011 की शुरुआत में, यह स्पष्ट हो गया कि परियोजना को रोक दिया गया था।[14]
अनलादेन निगल रिलीज इतिहास
वितरण
आधिकारिक तौर पर समर्थित टियर-1 प्लेटफॉर्म खिड़कियाँ, लिनक्स और मैकओएस (और रास्पबेरी पाई ओएस, और निचले स्तर पर s390x के लिए लिनक्स) हैं।
ऐसे और भी प्लेटफ़ॉर्म हैं जिनमें कार्यशील कार्यान्वयन शामिल हैं:[18]
- यूनिक्स की तरह
- विशेष और एम्बेडेड
- 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[citation needed]
पीईपी 11[19] पायथन सॉफ्टवेयर फाउंडेशन द्वारा सीपीथॉन में समर्थित नहीं होने वाले प्लेटफार्मों को सूचीबद्ध करता है। इन प्लेटफार्मों को अभी भी बाहरी बंदरगाहों द्वारा समर्थित किया जा सकता है। इन बंदरगाहों में शामिल हैं:
- 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)[20]
- 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[21]
- IBM i: iSeriesPython[22]
- DOS using DJGPP: PythonD[23]
- MorphOS: Python 2 and 3[24]
- PlayStation Portable: Stackless Python for PSP[25]
- Symbian OS: Python for S60
- Windows CE/Pocket PC: Python Windows CE port[26]
- OpenVMS: Ports of Python 3.x are maintained by VSI[27]
एंटरप्राइज़ लिनक्स
ये पायथन संस्करण वर्तमान में समर्थित एंटरप्राइज़ लिनक्स वितरण के साथ वितरित किए गए हैं।[28] तालिका में पायथन की समर्थन स्थिति का तात्पर्य पायथन कोर टीम से समर्थन से है, न कि वितरण अनुरक्षक से।
| Distribution version | Distribution end-of-life | Python version | |
|---|---|---|---|
| Ubuntu 22.04 LTS (Jammy Jellyfish) | 3.10 [1] | ||
| Ubuntu 20.04 LTS (Focal Fossa) | 2030-04[29][needs update] | [30] | 3.8[31][needs update] |
| Ubuntu 18.04 LTS (Bionic Beaver) | 2028-04[32] | 2.7[33] | 3.6[34] |
| Ubuntu 16.04 LTS (Xenial Xerus) | 2021-04-30[35][needs update] | 2.7[33] | 3.5[34] |
| Debian 11 | 2026-06[36] | 3.9[36][needs update] | |
| Debian 10 | 2024-06[37] | 2.7[38] | 3.7[39][needs update] |
| Debian 9 | 2022-06-30[40][needs update] | 2.7[41] | 3.5[42] |
| Red Hat Enterprise Linux 8 | 2029 | 2.7[43] | 3.6 |
| Red Hat Enterprise Linux 7 | 2024-11-30[44] | 2.7[45] | |
| CentOS 8 | 2029-05-31 | 2.7 | 3.6 |
| CentOS 7 | 2024-06-30 | 2.7[46] | |
| SUSE Linux Enterprise Server 15 | 2031-07-31 | 2.7[47] | 3.6 |
| SUSE Linux Enterprise Server 12 | 2027-10-31 | 2.7[48] | |
| SUSE Linux Enterprise Server 11 | 2022-03-31[needs update] | 2.7[48] | |
Old version Older version, still maintained Latest version | |||
विकल्प
CPython कई उत्पादन-गुणवत्ता वाले पायथन (प्रोग्रामिंग भाषा) #कार्यान्वयनों में से है: Java जावा वर्चुअल मशीनJVM) के लिए Java (प्रोग्रामिंग भाषा) में लिखा गया Jython, PyPy#RPython में लिखा गया PyPy और C में अनुवादित, और IronPython, जो सी शार्प (प्रोग्रामिंग लैंग्वेज) में लिखा गया है। सामान्य भाषा अवसंरचना के लिए सी #। कई प्रयोगात्मक कार्यान्वयन भी हैं।[49]
संदर्भ
- ↑ "Initialization, Finalization, and Threads". Python v3.8.3 documentation. Retrieved 2020-06-04.
- ↑ Paul, Ryan (2009-03-26). "Ars Technica report on Unladen Swallow goals". Arstechnica.com. Retrieved 2011-08-19.
- ↑ 3.0 3.1 Winter, Collin; Yasskin, Jeffrey; Kleckner, Reid (2010-03-17). "PEP 3146 - Merging Unladen Swallow into CPython". Python.org.
- ↑ "People working on Unladen Swallow". Archived from the original on 2015-10-29. Retrieved 2019-08-08.
- ↑ "Unladen Swallow project page". Retrieved 2011-08-19.
- ↑ "Issue 9410: Add Unladen Swallow's optimizations to Python 3's pickle. - Python tracker". bugs.python.org. Retrieved 2019-08-08.
- ↑ "Message on comp.lang.python". Retrieved 2011-08-19.
- ↑ "Unladen Swallow | Google Groups". Retrieved 2011-08-19.
- ↑ "reddit post by an Unladen committer". Reddit.com. 2010-06-24. Retrieved 2011-08-19.
- ↑ Winter, Collin (8 November 2010). "Current status of Unladen-Swallow".
- ↑ "2009 Q4 release branch creation". 2010-01-26. Retrieved 2011-08-19.
- ↑ "Developers focus on merge into py3k-jit". 2010-07-13. Retrieved 2011-08-19.
- ↑ "Unladen Swallow baseline". Python.org. Retrieved 2011-08-19.
- ↑ Kleckner, Reid (26 March 2011). "Unladen Swallow Retrospective". QINSB is not a Software Blog (qinsb.blogspot.com).
- ↑ "Unladen Swallow 2009Q1". unladen-swallow, A faster implementation of Python. Retrieved 19 October 2012.
- ↑ "Unladen Swallow 2009Q2". unladen-swallow, A faster implementation of Python. Retrieved 19 October 2012.
- ↑ "Unladen Swallow 2009Q3". unladen-swallow, A faster implementation of Python. Retrieved 19 October 2012.
- ↑ "PythonImplementations". Retrieved 19 July 2012.
- ↑ "PEP 11 -- Removing support for little used platforms". Python.org (in English). Retrieved 2019-08-08.
- ↑ "Irix still supported?".
- ↑ AmigaPython
- ↑ iSeriesPython
- ↑ PythonD
- ↑ http://yellowblue.free.fr/yiki/doku.php/en:dev:python:start Python 2 and 3
- ↑ Stackless Python for PSP
- ↑ Python Windows CE port
- ↑ "Python". VSI. Retrieved 2021-08-31.
- ↑ https://linuxlifecycle.com
- ↑ "Ubuntu release cycle". Ubuntu (in English). Retrieved 2021-01-18.
- ↑ "With Python 2 EOL'ed, Ubuntu 20.04 LTS Moves Along With Its Python 2 Removal - Phoronix". www.phoronix.com. Retrieved 2020-04-01.
- ↑ "Binary package "python3" in ubuntu focal". Launchpad.net.
- ↑ "Ubuntu 18.04 extended to 2028". ServerWatch.com. 2018-11-15. Retrieved 2019-09-09.
- ↑ 33.0 33.1 "python-defaults package : Ubuntu". Canonical Ltd. 2018-06-08. Retrieved 2018-06-08.
- ↑ 34.0 34.1 "python3-defaults package : Ubuntu". Canonical Ltd. 2018-06-08. Retrieved 2018-06-08.
- ↑ Science, Carnegie Mellon University School of Computer. "Ubuntu 16.04 - End of Life in 2021 - SCS Computing Facilities - Carnegie Mellon University". computing.cs.cmu.edu (in English). Retrieved 2021-02-15.
- ↑ 36.0 36.1 "Debian -- News -- Debian 11 "bullseye" released". www.debian.org. Retrieved 2022-01-04.
- ↑ "LTS - Debian Wiki". wiki.debian.org. Retrieved 2021-02-15.
- ↑ "Debian -- Details of package python in buster". packages.debian.org. Retrieved 2019-09-13.
- ↑ "Debian -- News -- Debian 10 "buster" released". www.debian.org. Retrieved 2019-08-09.
- ↑ "Debian -- News -- Debian 8 Long Term Support reaching end-of-life". www.debian.org. Retrieved 2021-02-15.
- ↑ "DistroWatch.com: Debian". DistroWatch.com. 2017-10-15. Retrieved 2017-10-15.
- ↑ "Debian -- Details of package python3 in stretch". Retrieved 2017-12-19.
- ↑ "Python in RHEL 8". Red Hat Developer Blog (in English). 2018-11-14. Archived from the original on 2019-05-10. Retrieved 2019-05-10.
- ↑ "Red Hat Enterprise Linux Life Cycle". Red Hat Customer Portal (in English). Retrieved 2020-04-01.
- ↑ "DistroWatch.com: Red Hat Enterprise Linux". DistroWatch.com. 2017-09-07. Retrieved 2017-10-15.
- ↑ "DistroWatch.com: CentOS". DistroWatch.com. 2017-09-14. Retrieved 2017-10-15.
- ↑ "Release Notes | SUSE Linux Enterprise Desktop/SUSE Linux Enterprise Workstation Extension 15 GA". www.suse.com. Retrieved 2019-08-08.
- ↑ 48.0 48.1 "DistroWatch.com: openSUSE". DistroWatch.com. 2017-10-14. Retrieved 2017-10-15.
- ↑ Martelli, Alex (2006). Python in a Nutshell (2nd ed.). O'Reilly. pp. 5–7. ISBN 978-0-596-10046-9.
अग्रिम पठन
- Shaw, Anthony (2021). CPython Internals: Your Guide to the Python 3 Interpreter. Real Python. ISBN 9781775093343.