CPython, Cython, PyPy… Przewodnik wprowadzający do różnych wariantów Pythona

gru 19, 2021
admin

Jeśli zajmujesz się programowaniem w Pythonie, są szanse, że słyszałeś słowa CPython, Cython, Jython, PyPy… Jednak czym one dokładnie są?

W tym artykule zrobimy małe wprowadzenie do niektórych z tych wariantów Pythona, abyś mógł przynajmniej zrozumieć, do czego dokładnie się odnoszą, jeśli zobaczysz je w innym kontekście.

CPython

CPython jest oryginalną implementacją Pythona, tą, której prawdopodobnie będziesz używał codziennie i którą możesz pobrać oficjalnie z python.org. Jego nazwa pochodzi od faktu, że kod Pythona jest kompilowany do kodu bajtowego przy użyciu C.

Jython

Jython jest alternatywną implementacją, która używa Javy, zamiast C, do uzyskania kodu bajtowego. Umożliwia to uruchomienie tego bajtkodu w JVM, wirtualnej maszynie Javy, tak jak w przypadku innych języków, takich jak Kotlin, Scala lub sama Java.

Jako że Jython jest tylko kolejną implementacją, składnia pozostaje niezmieniona: możesz wziąć cały swój kod CPython i uruchomić go w Jythonie bez potrzeby zmiany ani jednej linii.

Cython

Cython jest kompilatorem umożliwiającym pisanie rozszerzeń języka C dla Pythona, zwykle w celu uczynienia go bardziej wydajnym. W przeciwieństwie do poprzednich przykładów, nie jest to inna implementacja: używa CPython do uruchomienia kodu Pythona. Może być uważany za superset Pythona, ponieważ zawiera całą jego funkcjonalność i dodaje dodatkowe możliwości C na wierzchu.

Te rozszerzenia są napisane w specyficznej składni, bardzo podobnej do tej, której będziesz używał do pisania równoważnego kodu C. Zobaczmy ten przykład (ze strony Wikipedii Cythona)

def sum_up_to_n(n): a = 0 for i in range(n): a += i return acpdef sum_up_to_n(int n): cdef int a = 0, i for i in range(n): a += i return a

PyPy

Z PyPy mamy kolejną implementację Pythona, taką jak CPython czy Jython. Ciekawostką tej implementacji jest to, że jest ona zaimplementowana w… Pythonie (tak, prawdopodobnie to ci się nie podoba, więc czytaj dalej, aby zrozumieć, co przez to rozumiemy)

Rdzeniem PyPy jest kompilator Just-In-Time (JIT), którego używa do kompilacji najbardziej powtarzających się części twojego kodu źródłowego do natywnego kodu maszyny (zamiast kodu bajtowego, jak CPython lub Jython). Uruchamianie natywnego kodu jest bardziej wydajne niż uruchamianie kodu bajtowego, więc może to spowodować dużą poprawę prędkości, nawet biorąc pod uwagę czas, który zostanie wykorzystany do kompilacji kodu.

PyPy ma wiele szczegółowych informacji o swoich zaletach (i wadach) na swojej stronie internetowej, jak również kilka wskazówek dotyczących wydajności i porad, które przypadki mogą nie być dla niego najlepsze, więc zachęcam do sprawdzenia tego, jeśli jesteś zainteresowany.

Podsumowanie

Po tym artykule powinieneś być bardziej zaznajomiony z koncepcjami CPython, Jython, Cython i PyPy. Jednakże, są szanse, że jesteś zainteresowany, aby dowiedzieć się więcej o nich, więc przygotowałem listę linków, które mogą być naprawdę przydatne, jeśli chcesz nurkować głębiej w temacie. Mam nadzieję, że uznasz je za przydatne!

Przydatne linki

  • Python.org – Alternatywne implementacje Pythona
  • Ostateczny przewodnik po Jythonie
  • Oficjalna strona Cythona
  • Oficjalna strona PyPy
  • Kompilacja Just-in-time
  • Artykuł na Toptal o implementacjach Pythona

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.