CPython: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Creata dalla traduzione della pagina "CPython" |
rimossi wl secondo linee guida vedi Wikipedia:Wikilink#Wikilink nei titoli di sezioni e sottosezioni |
||
(29 versioni intermedie di 6 utenti non mostrate) | |||
Riga 1:
{{Software
|Sviluppatore = [[Guido van Rossum]], sviluppatore Python core e comunità Python community supportati dalla [[Python Software Foundation]]
|UltimaVersione = 3.13.0
|DataUltimaVersione = 7 ottobre 2024
|SistemaOperativo = 42 piattaforme. Vedi capitolo Piattaforme_supportate
|Linguaggio = [[C (linguaggio)]] e [[Python]]
|Genere = Interprete linguaggio programmazione Python
|Lingua = [[Lingua inglese|Inglese]]
|SoftwareLibero = sì
|SitoWeb = {{URL|https://www.python.org/}}
|nome = CPython
|sviluppatore = Python core developers and the Python community, supported by the [[Python Software Foundation]]
|linguaggi = [[C (programming language)|C]], [[Python (programming language)|Python]]
▲|licenza = [[Python Software Foundation License]]
}}
Line 14 ⟶ 20:
== Progetto ==
Una caratteristica particolare di CPython è che utilizza
Questa potrebbe essere la situazione tipica quando più thread servono client separati. Un thread potrebbe essere in attesa della risposta da un client, un altro potrebbe essere in attesa dell'esecuzione di una query [[Base di dati|al database]], mentre il terzo thread sta elaborando il codice Python.
Line 20 ⟶ 26:
L'utilizzo di GIL rende CPython inadatto ai processi che implementano algoritmi ad alta intensità di [[CPU]] e che potrebbero essere distribuiti su più [[Processore multicore|core]].
Nelle applicazioni reali sono piuttosto rare le situazioni in cui il GIL rappresenta un collo di bottiglia significativo. Questo perché Python è un linguaggio intrinsecamente lento e generalmente non utilizzato per operazioni che richiedono un uso intensivo della [[CPU]] o che richiedono bassi tempi di risposta. Python è solitamente utilizzato ad alto livello e richiama funzioni e librerie per eseguire attività specializzate. Tali librerie non sono scritte in Python e, il codice Python in un altro thread, può essere eseguito mentre viene eseguita una chiamata a uno di questi processi sottostanti. Le librerie non Python non sono soggette a GIL e possono eseguire contemporaneamente molti thread su più processori senza restrizioni.
Per ottenere vera concorrenza in Python, è necessario ricorrere a processi dell'interprete Cpython separati e gestiti dal sistema operativo. La comunicazione tra processi separati può essere più complessa rispetto alla comunicazione tra thread. Il modulo ''multiprocessing'' offre alcune soluzioni, ma può ancora introdurre overhead.
La presenza del GIL semplifica l'implementazione di CPython e facilita l'implementazione di applicazioni multi-thread che non traggono vantaggio dall'esecuzione simultanea di codice Python. Senza GIL, la concorrenza diventerebbe responsabilità dello sviluppatore che dovrebbe gestire esplicitamente la sincronizzazione tra i diversi thread per evitare [[race conditions]] e altri problemi legati alla [[Concorrenza (informatica)|concorrenza]].
Sebbene siano state avanzate numerose proposte per eliminare GIL ma considerando una serie di fattori complessi è stato deciso di mantenerlo. Sebbene GIL possa limitare le prestazioni in alcune applicazioni, offre un buon compromesso tra semplicità, stabilità e prestazioni per la maggior parte degli sviluppatori Python. Per consentire un maggiore parallelismo, nell'ottobre 2023 è stato rilasciato un miglioramento che permette l'utilizzo di un GIL separato per
Dopo diversi dibattiti, nel 2023 è stato lanciato un progetto per proporre di rendere GIL opzionale dalla versione 3.13 di Python,
== Piattaforme supportate ==
Le piattaforme ufficialmente supportate a livello-1 sono [[Linux]] per Intel a 64 bit che utilizza una toolchain GCC, [[macOS]] per Intel a 64 bit e ARM e [[Microsoft Windows]] per Intel a 32 e 64 bit. Esiste un supporto ufficiale di livello 2 per Linux per ARM a 64 bit, wasm32 ([[WebAssembly|Web Assembly]]) con supporto runtime WASI e Linux per Intel a 64 bit tramite una toolchain clang. I sistemi con supporto di livello 3 includono ARM Windows a 64 bit, iOS a 64 bit, [[Raspberry Pi OS]] (Linux per armv7 con hard float), Linux per PowerPC a 64 bit in modalità little-endian e Linux per s390x .
Altre piattaforme hanno implementazioni funzionanti, tra cui:
* [[AIX (sistema operativo)|AIX]]
* [[Berkeley Software Distribution|BSD]]
* [[Darwin (sistema operativo)|Darwin]]
* [[FreeBSD]]
* [[HP-UX]]
* [[illumos]]
* [[Linux]]
* [[macOS]]
* [[NetBSD]]
* [[OpenBSD]]
* [[Plan 9 from Bell Labs|Plan 9]]
* [[Solaris (sistema operativo)|Solaris]]
* [[Tru64]]
=== Sistemi dedicati ed embedded ===
* [[Android (operating system)|Android]]
* [[IOS|Apple iOS]]
* [[BlackBerry 10]]
* [[GP2X]]
* [[iPodLinux]]
* [[Nintendo DS]]
* [[GameCube]]
* [[Serie 60|Symbian OS Series60]]
* [[Nokia 770 Internet Tablet]]
* [[Nokia N800]]
* [[Nokia N810]]
* [[Nokia N900]]
* [[Openmoko (sistema operativo)|Openmoko]]
* [[Palm OS]]
* [[PlayStation 2]]
* [[PlayStation 3]] ''(FreeBSD)''
* [[Psion]]
* [[QNX]]
* [[Sharp Zaurus]]
* [[Xbox (console)|Xbox]]/[[XBMC]]
* [[VxWorks]]
=== Altri ===
* [[AROS]]
* [[OS/390]]
* [[Windows 8]] and later
* [[z/OS]]
=== Enterprise Linux ===
Queste versioni di Python sono distribuite con le distribuzioni Linux enterprise attualmente supportate.
{| class="wikitable sortable"
|+Enterprise Linux
Line 58 ⟶ 99:
|-
|[[Ubuntu]] 20.04 LTS (Focal Fossa)
|2030-04<ref>{{Cita web|url=https://ubuntu.com/about/release-cycle|titolo= |sito=Ubuntu|
|<ref>{{Cita web|url=https://www.phoronix.com/news/Python-2-EOL-Ubuntu-20.04|titolo= |sito=phoronix.com|
| {{Version|co|3.8}}<ref>{{
|-
|Ubuntu 18.04 LTS (Bionic Beaver)
|2028-04<ref>{{Cita web|url=https://www.serverwatch.com/server-news/canonical-extends-ubuntu-18.04-lts-linux-support-to-10-years.html|
| {{Version|o|2.7}}<ref name="ubuntu-py2">{{
| {{Version|o|3.6}}<ref name="ubuntu-py3">{{
|-
|Ubuntu 16.04 LTS (Xenial Xerus)
|2021-04-30<ref>{{Cita web|url=https://computing.cs.cmu.edu/news/2020/eol-ubuntu-1604|titolo= |sito=computing.cs.cmu.edu|
| {{Version|o|2.7}}<ref name="ubuntu-py2"/>
| {{Version|o|3.5}}<ref name="ubuntu-py3"/>
|-
|[[Debian]] 12
|2028-06<ref name="debian12">{{Cita web|url=https://www.debian.org/News/2023/20230610|titolo= |sito=debian.org}}</ref>
|
| {{Version|co|3.11}}<ref name="debian12"/>
|-
|[[Debian]] 11
|2026-06<ref name="debian.org">{{Cita web|url=https://www.debian.org/News/2021/20210814.en.html|titolo= |sito=debian.org|
|
| {{Version|co|3.9}}<ref name="debian.org"/>
|-
|Debian 10
|2024-06<ref>{{Cita web|url=https://wiki.debian.org/LTS|titolo= |sito=wiki.debian.org|
| {{Version|o|2.7}}<ref>{{
| {{Version|co|3.7}}<ref>{{
|-
|Debian 9
|2022-06-30<ref>{{Cita web|url=https://www.debian.org/News/2020/20200709.en.html|titolo= |sito=debian.org|
| {{Version|o|2.7}}<ref>{{
| {{Version|o|3.5}}<ref>{{
|-
|[[Red Hat Enterprise Linux]] 8
|2029
| {{Version|o|2.7}}<ref>{{
| {{Version|o|3.6}}
|-
|Red Hat Enterprise Linux 7
|2024-11-30<ref name=":0">{{Cita web|url=https://access.redhat.com/support/policy/updates/errata|titolo= |sito=Red Hat Customer Portal|
| {{Version|o|2.7}}<ref>{{
|
|-
|[[CentOS]] 8
|2029-05-31
| {{Version|o|2.7}}
| {{Version|o|3.6}}
|-
|CentOS 7
|2024-06-30
| {{Version|o|2.7}}<ref>{{
|
|-
|SUSE Linux Enterprise Server 15
|2031-07-31
| {{Version|o|2.7}}<ref>{{
| {{Version|o|3.6}}
|-
|SUSE Linux Enterprise Server 12
|2027-10-31
| {{Version|o|2.7}}<ref name="DistroWatch:openSUSE">{{
|
|-
|SUSE Linux Enterprise Server 11
|2022-03-31
| {{Version|o|2.7}}<ref name="DistroWatch:openSUSE"/>
|
Line 131 ⟶ 172:
== Alternative ==
CPython è una delle numerose [[Python|implementazioni Python]]. Esistono però alternative tra cui: [[Jython]], scritto in [[Java (linguaggio di programmazione)|Java]] per la [[Macchina virtuale Java|Java virtual machine]] (JVM); [[PyPy]], scritto in [[PyPy|RPython]] e tradotto in C; e [[IronPython]], scritto in [[C sharp|C#]] per la [[Common Language Infrastructure]].
Sono numerose anche le implementazioni sperimentali.<ref>{{Cita libro|nome=Alex|cognome=Martelli|titolo=Python in a Nutshell|url=https://archive.org/details/pythoninnutshell0000mart|edizione=2nd|anno=2006|editore=[[O'Reilly Media|O'Reilly]]|pp=[https://archive.org/details/pythoninnutshell0000mart/page/n20 5]–7|ISBN=978-0-596-10046-9|linkautore1=Alex Martelli}}</ref>
== Note ==
<references/>
{{Portale|software libero}}
|