Aplikacja w Pythonie i jej fragmenty w C++ warto dla wydajności?

0

Witam,

zastanawia mnie jedna rzecz tj. czy przenosząc niektóre fragmenty kodu z Pythona do C++ przy użyciu biblioteki Boost.Python ( http://www.boost.org/doc/libs/1_61_0/libs/python/doc/html/index.html ) mogę zyskać dość poważne na wydajności aplikacji, niż gdyby pisać to samo w czystym Pythonie. Wiadomo, że dużo zależy od tego, jakiego typu operacje są wykonywane. Mnie jednak interesuje sam fakt, czy w ogólnie 'produkcyjnie' praktykuje się coś takiego, że 'traci się czas' i niektóre fragmenty kodu są specjalnie wydzielane z kodu Pythona i 'przepisywane' specjalnie na C/C++ ?

Miał ktoś z takimi rzeczami styczność ?

Pzdr,
agawa

0

nie spotkalam sie w produkcji z systemem w pythonie ktory mialby takie wymagania i nie bardzo widze sensu zaczynania w nim powaznego projektu gdzie wymagane jest ekstremalne low latency. jesli nie jest twoim celem konkurowac z technologiami ktore lepiej sie do tego nadaja a po prostu chcialbys oszczedzic troche czasu na obliczeniach to bardzo dobre wyniki osiagniesz po zaimportowaniu numpy czy pandas

0

Nie słyszałem o czymś takim w komercyjnych projektach, ale to częste podejście np. w aplikacjach naukowych, gdzie nie każdy zna C++ na odpowiednio wysokim poziomie. Wtedy może z powodzeniem tworzyć skrypty wejściowe w Pythonie. Chyba najbardziej profesjonalną biblioteką tego typu jest fenics. Można tam wiele podpatrzeć. Jeśli masz jakieś własne algorytmy, niedostępne w numpy, a chcesz zostać przy Pythonie, można się ratować Cythonem.

0

Generalnie PyPy wcale aż takie wolne nie jest i jeśli nie ma jakichś mega ograniczeń czasowych to użycie PyPy albo numpy czy innych bibliotek obliczeniowych w C w zupełności wystarcza. Ja sie też nie spotkałem z sytuacją żeby coś tam przepisywać do C, niemniej jest to wykonalne ;]

0

Cython to przecież Python w C++. Na pewno cześć kodu ktoś (dobry w te klocki) mógłby poprawić, optymalizować niektóre moduły czy funkcje, ale myślę, że społeczność Pythona jest na tyle duża, że wielu dużych "niedoróbek" wydajnościowych nie ma.

0

@all - dzięki za odpowiedzi/opinie. Mam mniej więcej ogląd jak to wygląda. Temat zostawiam do dalszych rozważań ;)

pzdr,
agawa

0

Widziałem takie coś gdzie były skrypty w Pythonie + moduł w C do odbioru danych z FPGA - FPGA zbyt szybko napieprzało i C to buforował i odbierał.

0

Widziałem coś podobnego, co opisał @lukas_gab, ale w kontekście przetwarzania danych analogowych, gdzie istotna była wysoka częstotliwość próbkowania i operacje na małych setach próbek w czasie teraźniejszym. W sumie jednak koniec końców wszystko zostało przepisane na Cythona bez wyraźnego spadku szybkości.

1 użytkowników online, w tym zalogowanych: 0, gości: 1