Cpython

Ten artykuł jest szkicem o komputerach .

Możesz dzielić się swoją wiedzą doskonaląc ją ( jak? ) Zgodnie z zaleceniami odpowiednich projektów .

Cpython
Logo.
Obraz poglądowy artykułu CPython
Data pierwszej wersji 26 stycznia 1994
Ostatnia wersja 3.9.2 (19 lutego 2021)
Wersja rozwojowa 3.8.0b3 (29 lipca 2019 r.)
Napisane w VS
System operacyjny Wieloplatformowy
Licencja Licencja Python Software Foundation
Stronie internetowej www.python.org

CPython jest referencyjną implementacją języka Python oraz domyślną i najczęściej używaną implementacją tego języka.

CPython można zdefiniować zarówno jako interpreter, jak i kompilator , ponieważ kompiluje kod Pythona do kodu bajtowego napisanego w języku C przed jego interpretacją.

Posiada interfejs z kilkoma językami, w tym C, w którym można jawnie napisać powiązania w języku innym niż Python.

Wreszcie jest to wolne oprogramowanie .

Obsługiwane platformy

CPython działa na bardzo dużej liczbie platform  :

Kompatybilny z UNIX:

System operacyjny biura:

Wbudowane lub specyficzne:

Inne systemy operacyjne

Globalna blokada tłumacza

CPython używa globalnej blokady do ochrony zasobów tłumacza. Dlatego program w Pythonie nie może w pełni wykorzystać maszyn wieloprocesorowych, chyba że używa oddzielnych procesów zamiast lekkich procesów .

Rozbudowa

Istnieje kilka metod pisania modułów rozszerzeń. Standardowym sposobem jest napisanie biblioteki dynamicznej w C, która używa punktów wejścia interpretera CPython do manipulowania obiektami. Istnieją również generatory, takie jak SWIG czy cython, które umożliwiają korzystanie z języków wyższego poziomu.

Możliwe jest również użycie języków innych niż C, na przykład Boost dla C ++ lub Pyfort dla Fortran.

Począwszy od Pythona 2.5, standardowa biblioteka zawiera moduł ctypes, FFI ( Interfejs funkcji obcej ), który umożliwia bezpośrednie wywołanie biblioteki dynamicznej z kodu Pythona.

Implementacja modelu obiektowego

Obiekty CPython są tworzone przez rozszerzenie struktury PyObject, która zawiera licznik odwołań, wskaźniki używane do tworzenia łańcuchów w garbage collectorze oraz wskaźnik do klasy obiektu.

Zarządzanie pamięcią

Zarządzanie pamięcią odbywa się poprzez zliczanie referencji. Śmieciarza wliczone jest od wersji 2.0, aby rozwiązać problemy związane z cyklem.

Uwagi i referencje

  1. "  https://github.com/python/cpython/releases/tag/v3.9.2  " ,19 lutego 2021(dostęp 27 lutego 2021 )
  2. (w) Python 3.9.2 i 3.8.8 są już dostępne  " ,19 lutego 2021(dostęp 27 lutego 2021 )
  3. "  https://www.python.org/downloads/release/python-380b3/  "
  4. „  https://docs.python.org/3/license.html  ” (dostęp 19 sierpnia 2016 r. )
  5. http://docs.python.org/ext/ext.html
  6. http://python.net/crew/theller/ctypes/