Hejto.pl
Motyw strony
Dodaj post

Wpis użytkownika koszotorobur w Python

Fanatyk

w Python

43piorunów

**Cython** sprawia, że pisanie rozszerzeń C dla Pythona jest tak proste, jak sam Python!

Język Cython jest nadzbiorem języka Python, który dodatkowo obsługuje wywoływanie funkcji C i deklarowanie typów C na zmiennych i atrybutach klas. Dzięki temu kompilator może wygenerować bardzo wydajny kod C z kodu Cythona. Wygenerowany kod C jest następnie kompilowany przy pomocy jednego z dostępnych kompilatorów C/C++ do zoptymalizowanego modułu, który może zostać zaimportowany i użyty przez program napisany w Pythonie.

W skrócie Cython to Python ale z typami danych C - co pozwala mu być jednym z najlepszych i najprostszych narzędzi do przyspieszania programów napisanych w Pythonie!

Przykładowo w Cythonie napisane są moduły Pythona znane ze swojej szybkości jak:

* uvloop
* asyncpg

Oficjalny poradnik jak zacząć z Cythonem można zaleźć pod adresem: https://cython.readthedocs.io/en/latest/src/tutorial/cython_tutorial.html

Komentarze (3)

Specjalista1piorunów

CPython 3.13 rozpoczął refaktoryzację swojego ABI. Zmiany te początkowo były na tyle duże, że zrywały kompatybilność bibliotek korzystających z C-API, w tym właśnie Cythona. Ze zmian się na razie wycofano, ale nie wiemy ile w przyszłości będzie wymagać pracy by Cython działał z nowymi wersjami Pythona.

Źródło dyskusji na oficjalnej grupie: https://discuss.python.org/t/python-3-13-alpha-1-contains-breaking-changes-whats-the-plan/37490

Teraz sexy jest Rust + Python, czyli PyO3.

Python 3.13 alpha 1 contains breaking changes, what's the plan?Hi all, I haven’t followed CPython’s core discussions much since they (sadly) moved away from python-dev, so I ran into the C-API changes that were made for 3.13a1 with little prior warning. At least the shear amount of changes leaves me baffled. Hundreds of functions were removed, renamed, replaced with different functions. Header files were removed. Names were removed from header files. Macros were changed, even a few publicly documented ones. And the default answer to “how do I replace this...Discussions on Python.org
Fanatyk4piorunów

@rust-n-dust - dzięki za podzielenie się informacją!
Cython dostał w ostatnim roku dużo miłości i po latach pracy udało się wreszcie wydać wersję 3.0.0 (obecnie jest 3.0.6) - mam nadzieję, że to jest dobry znak i uda się zachować kompatybilność nawet po dużych zmianach w nowych wersjach Pythona.
Tak jako ciekawostkę polecam też sprawdzić mypyc , który jest częścią projektu mypy.
Ja po cichu liczę, że kiedyś dostaniemy w pełni typowanego, kompilowalnego Pythona 😉
>Teraz sexy jest Rust + Python, czyli PyO3.
Tak PyO3 jest sexy i zachęcam każdego do spróbowania...
...niemniej w korpo:

1. Wprowadzanie nowego języka by stał się zaakceptowaną technologią wymaga przekonania sporej ilości ludzi i przejścia procesów obarczonych papierkologią - co zabiera dużo czasu i mnóstwo energii. Wielu ludzi, którzy nie musieli pracować w takich warunkach nie rozumie, że nie można sobie ot tak ściągnąć z internetu i używać.
2. Cython jest częścią ekosystemu Pythona i można go ściągną jako moduł używając instalatora pakietów takiego jak pip - oznacza to, że można go pobrać z oficjalnego serwera PyPi (lub dodać paczkę do wewnętrznego) o wiele mniejszym nakładem pracy niż wprowadzenie nowego języka/technologi i związanych z tym procesów. Do tego kompilator jest zazwyczaj w repozytoriach gotowy do zainstalowania (takich jak Satelite dla RHEL) - jeśli go nie ma już zainstalowanego na maszynie developera. Powoduje to, że Cython może być ścieżką najmniejszego oporu, jeśli chcemy przyspieszyć działanie naszej Pythonowej aplikacji w korpo.

GitHub - mypyc/mypyc: Compile type annotated Python to fast C extensionsCompile type annotated Python to fast C extensions - mypyc/mypycGitHub