CPython — найбільш поширена, реалізація інтерпретатора мови програмування Python.
Тип | d d інтерпретатор і вільне та відкрите програмне забезпечення |
---|---|
Автор | Гвідо ван Россум |
Розробник | Python Software Foundation |
Стабільний випуск | 3.8.1 |
Версії | 3.12.0 (2 жовтня 2023)[1] |
Платформа | кросплатформова програма |
Операційна система | Багатоплатформова |
Мова програмування | C, Python |
Ліцензія | Software Foundation License |
Репозиторій | CPython |
Вебсайт | python.org |
CPython є інтерпретатором байт-коду, написаний на C. Розробка CPython ведеться групою розробників під керівництвом творця Python Гвідо ван Россума. CPython є програмним забезпеченням з відкритим вихідним кодом.
Крім CPython, існують інші реалізації Python: Jython, IronPython, PyPy, Stackless Python.
Дизайн
Особливістю CPython є те, що він використовує глобальне блокування інтерпретатора (GIL) для кожного процесу інтерпретатора CPython, тобто в рамках одного процесу в будь-який момент часу може оброблятися лише один потік байт-коду Python. Це не означає, що в багатопотоковому читанні немає сенсу; найпоширеніший сценарій з декількома потоками — це те, коли потоки в основному чекають завершення зовнішніх процесів.
Наприклад, три потоки обслуговують окремих клієнтів. Один потік може чекати, коли клієнт відповість, інший може чекати виконання запиту бази даних, тоді як третій потік насправді обробляє код Python.
Однак GIL не підходить для процесів, які реалізують інтенсивні алгоритми процесора в коді Python, які потенційно можуть бути розподілені по декількох ядрах.
У реальних програмах ситуації, коли GIL є значним вузьким місцем, є досить рідкісним. Це пояснюється тим, що Python властива повільна мова, і зазвичай не використовується для процесорів, які вимагають швидкого процесора або залежать від часу. Python, як правило, використовується на верхньому рівні і викликає функції в бібліотеках для виконання спеціалізованих завдань. Ці бібліотеки, як правило, не записуються в Python, а код Python в іншому потоці може виконуватися під час виклику до одного з цих базових процесів. Бібліотека, яка не є Python, покликана виконувати завдання, що вимагає процесора, не підлягає GIL і може одночасно виконувати безліч потоків на декількох процесорах без обмежень.
Паралельність коду Python може бути досягнута лише за допомогою окремих процесів інтерпретатора CPython, якими керує багатозадачна операційна система. Це ускладнює зв'язок між паралельними процесами Python, хоча модуль багатопроцесорної обробки дещо пом'якшує це; це означає, що програми, які дійсно можуть отримати користь від одночасного виконання Python-коду, можуть бути реалізовані з обмеженою сумою витрат.
Наявність GIL спрощує реалізацію CPython та полегшує реалізацію багатопотокових програм, які не отримують користі від одночасного виконання коду Python. Однак без багатопроцесорних програм GIL необхідно переконатися, що всі загальні коди є безпечними для потоків.
Хоча було зроблено багато пропозицій щодо усунення GIL, загальним консенсусом було те, що в більшості випадків переваги GIL перевершують недоліки; у кількох випадках, коли GIL є вузьким місцем, додаток слід будувати навколо багатопроцесорної структури.
Платформи, що підтримуються
|
|
|
|
Платформи, що більше не підтримуються
В PEP 11 перераховані платформи, які більше не підтримуються Python Software Foundation. З усім тим ці платформи можуть мати підтримку від інших дистриб'юторів. Список платформ, що більше не підтримуються:
Альтернативи
CPython є однією з декількох «виробничих особливостей» (реалізації Python), включаючи: Jython, написаний на Java для Java віртуальної машини (JVM), PyPy, написаний на (RPython) та перекладений на C, та IronPython, написаний на C #. Також є (кілька експериментальних реалізацій).
Примітки
- Wouters T. Python 3.12.0 (final) is here — 2023.
- . Архів оригіналу за 22 жовтня 2020. Процитовано 8 серпня 2015.
{{}}
: Текст «.7.6 документація» проігноровано () - [1] [ 9 червня 2009 у Wayback Machine.]
- (2006). Python in a Nutshell (вид. 2nd). O'Reilly. с. 5–7. ISBN .
Посилання
- Python.org [ 17 квітня 2018 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
CPython najbilsh poshirena realizaciya interpretatora movi programuvannya Python CPythonTipd d interpretator i vilne ta vidkrite programne zabezpechennyaAvtorGvido van RossumRozrobnikPython Software FoundationStabilnij vipusk3 8 1Versiyi3 12 0 2 zhovtnya 2023 1 Platformakrosplatformova programaOperacijna sistemaBagatoplatformovaMova programuvannyaC PythonLicenziyaSoftware Foundation LicenseRepozitorijCPythonVebsajtpython org CPython ye interpretatorom bajt kodu napisanij na C Rozrobka CPython vedetsya grupoyu rozrobnikiv pid kerivnictvom tvorcya Python Gvido van Rossuma CPython ye programnim zabezpechennyam z vidkritim vihidnim kodom Krim CPython isnuyut inshi realizaciyi Python Jython IronPython PyPy Stackless Python DizajnOsoblivistyu CPython ye te sho vin vikoristovuye globalne blokuvannya interpretatora GIL dlya kozhnogo procesu interpretatora CPython tobto v ramkah odnogo procesu v bud yakij moment chasu mozhe obroblyatisya lishe odin potik bajt kodu Python Ce ne oznachaye sho v bagatopotokovomu chitanni nemaye sensu najposhirenishij scenarij z dekilkoma potokami ce te koli potoki v osnovnomu chekayut zavershennya zovnishnih procesiv Napriklad tri potoki obslugovuyut okremih kliyentiv Odin potik mozhe chekati koli kliyent vidpovist inshij mozhe chekati vikonannya zapitu bazi danih todi yak tretij potik naspravdi obroblyaye kod Python Odnak GIL ne pidhodit dlya procesiv yaki realizuyut intensivni algoritmi procesora v kodi Python yaki potencijno mozhut buti rozpodileni po dekilkoh yadrah U realnih programah situaciyi koli GIL ye znachnim vuzkim miscem ye dosit ridkisnim Ce poyasnyuyetsya tim sho Python vlastiva povilna mova i zazvichaj ne vikoristovuyetsya dlya procesoriv yaki vimagayut shvidkogo procesora abo zalezhat vid chasu Python yak pravilo vikoristovuyetsya na verhnomu rivni i viklikaye funkciyi v bibliotekah dlya vikonannya specializovanih zavdan Ci biblioteki yak pravilo ne zapisuyutsya v Python a kod Python v inshomu potoci mozhe vikonuvatisya pid chas vikliku do odnogo z cih bazovih procesiv Biblioteka yaka ne ye Python poklikana vikonuvati zavdannya sho vimagaye procesora ne pidlyagaye GIL i mozhe odnochasno vikonuvati bezlich potokiv na dekilkoh procesorah bez obmezhen Paralelnist kodu Python mozhe buti dosyagnuta lishe za dopomogoyu okremih procesiv interpretatora CPython yakimi keruye bagatozadachna operacijna sistema Ce uskladnyuye zv yazok mizh paralelnimi procesami Python hocha modul bagatoprocesornoyi obrobki desho pom yakshuye ce ce oznachaye sho programi yaki dijsno mozhut otrimati korist vid odnochasnogo vikonannya Python kodu mozhut buti realizovani z obmezhenoyu sumoyu vitrat Nayavnist GIL sproshuye realizaciyu CPython ta polegshuye realizaciyu bagatopotokovih program yaki ne otrimuyut koristi vid odnochasnogo vikonannya kodu Python Odnak bez bagatoprocesornih program GIL neobhidno perekonatisya sho vsi zagalni kodi ye bezpechnimi dlya potokiv Hocha bulo zrobleno bagato propozicij shodo usunennya GIL zagalnim konsensusom bulo te sho v bilshosti vipadkiv perevagi GIL perevershuyut nedoliki u kilkoh vipadkah koli GIL ye vuzkim miscem dodatok slid buduvati navkolo bagatoprocesornoyi strukturi Platformi sho pidtrimuyutsyaUnix podibniAIX BSD Darwin FreeBSD HP UX IRIX 5 ta piznishi Plan 9 Mac OS X NetBSD Linux OpenBSD Solaris Tru64 Inshi Unix Desktopni OSAROS BeOS Windows Windows NT OS 2 RISC OS Specialni ta vbudovaniNintendo DS Nintendo Gamecube Symbian OS Series60 Palm OS PlayStation 2 PlayStation 3 Linux QNX Xbox XBMC VxWorks Mejnfrejmi ta inshiVMSPlatformi sho bilshe ne pidtrimuyutsyaV PEP 11 pererahovani platformi yaki bilshe ne pidtrimuyutsya Python Software Foundation Z usim tim ci platformi mozhut mati pidtrimku vid inshih distrib yutoriv Spisok platform sho bilshe ne pidtrimuyutsya DOS ne pidtrimuyetsya pochinayuchi z 2 0 IRIX 4 ne pidtrimuyetsya pochinayuchi z 2 3 Mac OS 9 ne pidtrimuyetsya pochinayuchi z 2 4 MINIX ne pidtrimuyetsya pochinayuchi z 2 3 AlternativiCPython ye odniyeyu z dekilkoh virobnichih osoblivostej realizaciyi Python vklyuchayuchi Jython napisanij na Java dlya Java virtualnoyi mashini JVM PyPy napisanij na RPython ta perekladenij na C ta IronPython napisanij na C Takozh ye kilka eksperimentalnih realizacij PrimitkiWouters T Python 3 12 0 final is here 2023 d Track Q49952380 Arhiv originalu za 22 zhovtnya 2020 Procitovano 8 serpnya 2015 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Tekst 7 6 dokumentaciya proignorovano dovidka 1 9 chervnya 2009 u Wayback Machine 2006 Python in a Nutshell vid 2nd O Reilly s 5 7 ISBN 978 0 596 10046 9 PosilannyaPython org 17 kvitnya 2018 u Wayback Machine