Da quello che ho visto e letto sui blog, PyPy è un progetto molto ambizioso. Quali sono alcuni vantaggi che porteranno alla tabella sui suoi fratelli (CPython, Jython e IronPython)? È la velocità, la compatibilità multipiattaforma (comprese le piattaforme mobili), la possibilità di utilizzare le estensioni c senza il GIL, o si tratta più di un esercizio tecnico su cosa si può fare?Che cosa deve offrire PyPy su CPython, Jython e IronPython?
risposta
PyPy è davvero due progetti:
- Un interprete compilatore di strumenti che consente di scrivere interpreti in RPython (un sottoinsieme statico di Python) e di compilare interpreti multipiattaforma d standalone, per la JVM, per NET (ecc)
- Un'implementazione di Python in RPython
Questi due progetti permettono molte cose.
- Mantenere Python in Python è molto più facile che mantenere in C
- Da un singolo codice di base è possibile generare interpreti Python che corrono sulla JVM, NET e indipendente - invece di avere più implementazioni leggermente incompatibili
- parte della toolchain compilatore JIT include un generatore sperimentale (giunto alla sua quinta incarnazione e di iniziare a lavorare davvero bene) - l'obiettivo è per una JITed PyPy per eseguire molto più veloce rispetto CPython
- è mu ch più facile sperimentare le caratteristiche fondamentali della lingua - come la rimozione della GIL, una migliore raccolta dei rifiuti, stackless integrazione e così via
Quindi ci sono davvero un sacco di ragioni per PyPy di essere eccitante, ed è finalmente iniziando a vivere fino a tutte le sue promesse.
Ne aggiungo uno a questa grande lista: non c'è bisogno di ottenere nuove versioni delle librerie Python (es. Estensioni C) ogni volta che si passa a nuova versione .X. Che grande vittoria sarà. – Brandon
In che modo PyPy migliora la situazione con le estensioni C? In effetti le estensioni C sono uno degli (attuali) maggiori svantaggi di PyPy - non funzionano affatto a meno che non siano portati in modo specifico. – fuzzyman
Con la velocità aggiuntiva di PyPy JIT (in particolare se possono applicarlo efficacemente al codice 'ctypes'), in primo luogo dovrebbero esserci un numero significativamente minore di estensioni C nel mix. – ncoghlan
La caratteristica più importante è ovviamente il compilatore JIT. Nei file CPython vengono compilati in bytecode (.pyc
) o in bytecode ottimizzato (.pyo
) e quindi interpretati. Con PyPy verranno compilati in codice nativo. PyPy comprende anche Stackless Python patch, tra cui è impressionante features (serializzazione tasklet, fili di luce etc.)
Nel caso in cui Python ottiene un vero e proprio JIT Penso che sarà più veloce di qualsiasi altra applicazione.
Il vantaggio è che è molto più semplice implementare nuove funzionalità. Lo si può vedere oggi osservando la biblioteca. Spesso i moduli sono scritti in Python e poi tradotti in C.
compatibilità cross-platform
Sì
Questo è un link per la presentazione di uno degli autori PyPy forniti a PyCon 2009. È molto istruttivo.
Controlla anche il torrent dei colloqui di EuroPython 2012, alcuni dei quali erano su PyPy (e senza stack, che ora fa parte di PyPy) –
- 1. Gli script CPython, IronPython e Jython sono compatibili tra loro?
- 2. compatibilità tra CPython e IronPython cPickle
- 3. IronPython ScriptRuntime equivalente a CPython PYTHONPATH
- 4. Cosa si può fare in Cpython che non può essere fatto in IronPython?
- 5. Implementazioni Python pronte per la produzione oltre a CPython?
- 6. Che cosa dovrei usare IronPython IDE?
- 7. Stackless in PyPy e PyPy + greenlet - differenze
- 8. CPython è l'interprete bytecode?
- 9. Come installo PyPy su appveyor?
- 10. Cosa succede quando importa un modulo in ironpython?
- 11. installazione zeromq under pypy
- 12. Compilare PyPy to Exe
- 13. CPython - Internamente, cosa viene memorizzato nello stack e nell'heap?
- 14. Quando Jython supporta Python 3?
- 15. Come usare PyPy su Windows?
- 16. Cosa deve fare un sito web che deve essere scalato?
- 17. PyPy su Windows 7 x64?
- 18. Compatibilità con IronPython 3
- 19. IronPython su Xamarin
- 20. Che cosa deve fare effettivamente OOttimizeForNetworkUse?
- 21. Come fa Spark interoperare con CPython
- 22. Svantaggi di eseguire Django con PyPy?
- 23. Jython ha il GIL?
- 24. IDE per ironpython su windows
- 25. Che cosa significa "Il file binario dwarfdump deve esistere e deve essere eseguibile"?
- 26. Quale profilo di memoria PyPy è raccomandato?
- 27. Cosa deve fare l'installazione?
- 28. IronPython e pdb.set_trace()
- 29. Il modo migliore per rilevare IronPython
- 30. Python/jython coesistenti in virtualenv
FWIW puoi già utilizzare c-extensions su CPython senza GIL. È normale il codice Python (quando viene eseguito con i thread) che soffre davvero del GIL. – fuzzyman