När vi talar om Python menar vi ofta inte bara språket utan även implementationen. Python är faktiskt en specifikation för ett språk som kan implementeras på många olika sätt.
Bakgrund
För att gå vidare ska vi förstå skillnaden mellan bytecode och maskinkod (native code).
Maskinkod (aka native code)
Maskinkod är en uppsättning instruktioner som direkt utförs av processorn. Varje instruktion utför en mycket unik uppgift, t.ex. inläsning eller en logisk operation på data i CPU-minnet. Nästan alla högnivåspråk, t.ex. C, översätter källkoden till körbar maskinkod med hjälp av kompilatorer, laddare och länkare. Varje processor eller processorfamilj har sin egen instruktionsuppsättning för maskinkod.
Bytecode
Bytecode är också en binär representation som exekveras av en virtuell maskin (inte direkt av processorn). Den virtuella maskinen (som är skriven på olika sätt för olika maskiner) omvandlar den binära instruktionen till en specifik maskininstruktion. Ett av de språk som använder begreppet Bytecode är Java.
Maskinkod är mycket snabbare jämfört med Bytecode men Bytecode är portabel och säker jämfört med Maskinkod.
Utföranden av Python
Cpython
Standardutförandet av programmeringsspråket Python är Cpython. Som namnet antyder är Cpython skrivet i C-språket. Cpython kompilerar pythons källkod till mellanliggande bytekod, som exekveras av den virtuella maskinen Cpython. CPython distribueras med ett stort standardbibliotek som är skrivet i en blandning av C och Python. CPython ger högsta möjliga kompatibilitet med Pythonpaket och C-förlängningsmoduler. Alla versioner av språket Python implementeras i C eftersom CPython är referensimplementationen.
Några av de implementationer som är baserade på CPython runtime core men med utökat beteende eller funktioner i vissa aspekter är Stackless Python, wpython, MicroPython.
Stackless Python – CPython med tonvikt på samtidighet med hjälp av tasklets och kanaler (används av dspython för Nintendo DS)
Andra implementationer
Det finns en del andra implementationer av språket Python också De enda implementationer som är kända för att vara kompatibla med en viss version av språket är IronPython, Jython och PyPy.
Jython
Jython är en implementering av programmeringsspråket Python som kan köras på Java-plattformen. Jython-programmen använder Java-klasser i stället för Python-moduler .Jython kompileras till Java-bytekod, som sedan kan köras av Javas virtuella maskin. Jython gör det möjligt att använda Java-klassbibliotekets funktioner från Pythonprogrammet. Jython är långsamt jämfört med Cpython och saknar kompatibilitet med CPython-bibliotek.
IronPython
En Python-implementation skriven i C# som är inriktad på Microsofts .NET-ramverk. I likhet med Jython används .Net Virtual Machine, dvs. Common Language Runtime. IronPython kan använda .NET-ramverket och Python-biblioteken, och andra .NET-språk kan använda Python-kod mycket effektivt. IronPython presterar bättre i Pythonprogram som använder trådar eller flera kärnor, eftersom det har en JIT och även för att det inte har Global Interpreter Lock.
PyPy
”Om du vill att din kod ska köras snabbare bör du förmodligen bara använda PyPy”. – Guido van Rossum (skapare av Python)
Python är ett dynamiskt programmeringsspråk. Python sägs vara långsamt eftersom CPython-implementationen som standard kompilerar Python-källkoden i bytecode, vilket är långsamt jämfört med maskinkod (native code). Här kommer PyPy in.
PyPyPy är en implementering av programmeringsspråket Python skriven i Python. Tolkaren är skriven i RPython (en delmängd av Python).
PyPy använder (just-in-time compilation). Enkelt uttryckt använder JIT kompileringsmetoder för att göra tolkarsystemet effektivare och snabbare. Så i princip gör JIT det möjligt att kompilera källkoden till inhemsk maskinkod vilket gör den mycket snabb.
PyPyPy levereras också som standard med stöd för stackless mode, vilket ger mikrotrådar för massiv samtidighet. Python sägs vara ungefär 7,5 gånger snabbare än Cpython.
Några andra implementeringar av Python är CLPython, Pyston, Psyco, Cython, IPython.
Denna artikel har bidragits av Saurabh Daalia. Om du gillar GeeksforGeeks och vill bidra kan du också skriva en artikel via contribute.geeksforgeeks.org eller maila din artikel till [email protected]. Se din artikel dyka upp på GeeksforGeeks huvudsida och hjälp andra Geeks.