Thread View: pl.comp.lang.python
11 messages
11 total messages
Started by walec51
Tue, 14 Jul 2009 22:00
Python komunikacja z innymi językami i wydajność
Author: walec51
Date: Tue, 14 Jul 2009 22:00
Date: Tue, 14 Jul 2009 22:00
20 lines
1904 bytes
1904 bytes
Witam. Ostatnio przyglądam się pythonowi z różnych stron i zastanawiam się czy trochę głębiej w niego nie wejść. Kuszom mnie dwie obiegowe opinie jakie słyszałem. Pierwsza to że łatwo go interfejsować z językami statycznymi (głownie C i C++) oraz druga że łatwo przyspieszyć jego działanie w przypadku gdy interpreter nie domaga (psycho, pypy, cython). I tu miał bym parę pytań do osób, które miały okazję już nieco wejść w temat: - jaki jest wachlarz języków z których lib'ami można się interfejsować ? - jak wydajne są te psycho, pypy, cython, jython, ironpython i inne "przyspieszacze" ? - jak te "przyspieszacze" wpływają na interfejsowanie z innymi językami ? Z góry dzięki za odpowiedzi
Re: Python komunikacja z innymi językami i wydajność
Author: Jacek Czerwinski
Date: Tue, 14 Jul 2009 22:27
Date: Tue, 14 Jul 2009 22:27
37 lines
2636 bytes
2636 bytes
walec51 pisze: > Witam. > > Ostatnio przyglądam się pythonowi z różnych stron i zastanawiam się > czy trochę głębiej w niego nie wejść. Kuszom mnie dwie obiegowe opinie > jakie słyszałem. Pierwsza to że łatwo go interfejsować z językami > statycznymi (głownie C i C++) oraz druga że łatwo przyspieszyć jego > działanie w przypadku gdy interpreter nie domaga (psycho, pypy, > cython). > > I tu miał bym parę pytań do osób, które miały okazję już nieco wejść w > temat: > > - jaki jest wachlarz języków z których lib'ami można się > interfejsować ? > - jak wydajne są te psycho, pypy, cython, jython, ironpython i inne > "przyspieszacze" ? > - jak te "przyspieszacze" wpływają na interfejsowanie z innymi > językami ? Nie ze wszystkimi wymienionymi narzędziami miałem styczność, a nawet z mniejszością z nich (interfejs z C) ALE wydaje mi się, że pytanie jest źle postawione. Interfejsujesz z jakimś językiem BO są ku temu powody (integracyjne) a nie dla przyśpieszenia. Python (C python) nie jest jakimś szybkim językiem iterpretowanym (testy pokazują szybsze np. Lua), jest na pewno językiem bogatym, o dużej sile itd i w tą stronę idzie rozwój. Języki na JVM i .NET teoretycznie mogą działać przez kompilowanie do kodu VM, lub byc interpretowane. Po kompilowanym można się spodziewać niejakiej szybkości (tzn porównywalnej w sensie nie odstającej o rzędy wielkości od np. Javy, tak ma Groovy), na interpretowanych nie za bardzo - niestety Jythona ani Iron'a nie dotykałem, ale była tu dyskusja, zrozumiałem nie są specjalnie dojrzałe Więc pytanie, w jakim celu to chcesz interfejsować (integrować)
Re: Python komunikacja z innymi językami i wydajność
Author: walec51
Date: Wed, 15 Jul 2009 00:58
Date: Wed, 15 Jul 2009 00:58
21 lines
2464 bytes
2464 bytes
> Więc pytanie, w jakim celu to chcesz interfejsować (integrować) Głównym powodem jest po prostu to że różne biblioteki które mnie interesują są napisane w językach C, C++ i czasami w tradycyjnie kompilowanej Javie (gcj). I tak sobie gdybam aby Pythona użyć jako ładnego obiektowego kleju do tego wszystkiego, który w dodatku ma parę swoich ciekawych bibliotek. > ALE wydaje mi się, że pytanie jest źle postawione. Interfejsujesz z > jakimś językiem BO są ku temu powody (integracyjne) a nie dla > przyśpieszenia. Z tego co czytałem to i tak i nie. Mówi się na mieście że w systemach napisanych w pythonie gdy jakaś część kodu staje się zbyt mocożerna to powszechną praktyką jest przepisywanie tego na C i interfejsowanie z resztą systemu. Tak i owak mi głównie zależy na bibliotekach o których mówiłem wcześniej. A wiąże ten temat z przyspieszaczami bo wiem że np. Jython wyklucza moduły, które są interfejsami dla bibliotek napisanych w C lub C++ i zastanawiam się czy pozostałe też podobne ograniczenia narzucają.
Re: Python komunikacja z innymi językami i wydajność
Author: Rob Wolfe
Date: Wed, 15 Jul 2009 14:59
Date: Wed, 15 Jul 2009 14:59
72 lines
4012 bytes
4012 bytes
walec51 napisał(a): > Witam. > > Ostatnio przyglądam się pythonowi z różnych stron i zastanawiam się > czy trochę głębiej w niego nie wejść. Kuszom mnie dwie obiegowe opinie > jakie słyszałem. Pierwsza to że łatwo go interfejsować z językami > statycznymi (głownie C i C++) oraz druga że łatwo przyspieszyć jego Jesli mowa o uzywaniu bibliotek z innych jezykow, to podstawowe znaczenie ma wybor konkretnej implementacji Pythona. CPython (implementacja Pythona w C) faktycznie bardzo latwo integruje sie z C/C++. > działanie w przypadku gdy interpreter nie domaga (psycho, pypy, > cython). PyPy [1]_ to nie jest "przyspieszac", a odrebna implementacja Pythona w Pythonie. > I tu miał bym parę pytań do osób, które miały okazję już nieco wejść w > temat: > > - jaki jest wachlarz języków z których lib'ami można się > interfejsować ? To nie jest tak, ze Python jako jezyk ma jakas cudowna wlasciwosc, ktora pozwala na przezroczyste uzycie wszystkiego co kiedykolwiek zostalo napisane. Taki Jython (czyli implementacja Pythona w Javie) kompilowany jest do bajtkodu Javy, dziala na JVM i moze korzystac z wszystkiego co jest dostepne z poziomu JVM. Jesli chcesz uzyc bibliteki z C w Jythonie musisz zrobic to samo, co musialbys zrobic, aby uzyc tej biblioteki z poziomu Javy. Czyli napisac kod w Javie (rozszerzenie Jythona) i uzyc JNI lub JNA. > - jak wydajne są te psycho, pypy, cython, jython, ironpython i inne > "przyspieszacze" ? Z tego co wyminiles, to tylko psycho i cython mozna nazwac "przyspieszaczami". Pozostale to implementacje Pythona w roznych jezykach i z przyspieszaniem nie maja wiele wspolnego. Psycho to taki optymalizator bajtkodu Pythona, czyli piszac w czystym Pythonie (bez zadnych rozszerzen w C) mozesz uzyskac duze przyspieszenia. Cython daja mozliwosc latwego pisania rozszerzen do CPythona. Nie trzeba rzezbic w czystym C/API, lecz mozna uzyc bardziej wysokopoziomowego jezyka (podobnego do samego Pythona zreszta - przyjemna rzecz). Ciekawa opcja jest tez ctypes [2]_. > - jak te "przyspieszacze" wpływają na interfejsowanie z innymi > językami ? Jezyk implementacji jest kluczowy. Psycho ma sie nijak do Jythona, poniewaz Jython kompilowany jest do bajtkodu Javy, a nie Pythona. Cython ma sie nijak do IronPythona czy PyPy. Sluzy wylacznie do pisania rozszerzen do CPythona. Pogloski, ktore slyszales o latwej integracji z bibliotekami w innych jezykach sa prawdziwe, ale na poziomie konkretnej implementacji Pythona. Pomiedzy implementacjami przenosny jest czysty kod Pythona, a nie rozszerzenia napisane w C czy Javie. .. [1] http://codespeak.net/pypy/dist/pypy/doc/index.html .. [2] http://python.net/crew/theller/ctypes/ RW
Re: Python komunikacja z innymi językami i wydajność
Author: Bart Ogryczak
Date: Mon, 20 Jul 2009 16:27
Date: Mon, 20 Jul 2009 16:27
31 lines
2615 bytes
2615 bytes
On Jul 15, 12:00 am, walec51 <wal...@gmail.com> wrote: > Witam. > > Ostatnio przyglądam się pythonowi z różnych stron i zastanawiam się > czy trochę głębiej w niego nie wejść. Kuszom mnie dwie obiegowe opinie > jakie słyszałem. Pierwsza to że łatwo go interfejsować z językami > statycznymi (głownie C i C++) Bardzo łatwo można się dostać do bibliotek C z Pythona przez moduł ctypes, bardzo łatwo można też tworzyć moduły Pythona. W C++ (bez extern C) nie ma tak łatwo. Trzeba użyć narzędzia typu np. Boost::Python. > oraz druga że łatwo przyspieszyć jego > działanie w przypadku gdy interpreter nie domaga (psycho, pypy, > cython). Nie, zdecydowanie nie łatwo. A jeśli chodzi o przyspieszanie to po pierwsze Stackless, dzięki któremu można zrównoleglić, po drugie Unladen Swallow (http://code.google.com/p/unladen-swallow/wiki/ ProjectPlan). > I tu miał bym parę pytań do osób, które miały okazję już nieco wejść w > temat: > > - jaki jest wachlarz języków z których lib'ami można się > interfejsować ? Bardzo łatwo z C, ale przez zabawki typu SWIG praktycznie można z dowolnym. Nie mówiąc już o tym, że można użyć jakiegoś standardowego protokołu.
Re: Python komunikacja z innymi językami i wydajność
Author: Jacek Czerwinski
Date: Mon, 20 Jul 2009 17:07
Date: Mon, 20 Jul 2009 17:07
19 lines
1748 bytes
1748 bytes
Bart Ogryczak pisze: > On Jul 15, 12:00 am, walec51 <wal...@gmail.com> wrote: >> I tu miał bym parę pytań do osób, które miały okazję już nieco wejść w >> temat: >> >> - jaki jest wachlarz języków z których lib'ami można się >> interfejsować ? > > Bardzo łatwo z C, ale przez zabawki typu SWIG praktycznie można z > dowolnym. Nie mówiąc już o tym, że można użyć jakiegoś standardowego > protokołu. Żeby to miało zysk szybkościowy (podtekst pytania) to dużo musi zajść (rzadkie przełączanie a duże kawałki kodu C). Zwłaszcza SWIG jest elastyczny, ale de facto jeszcze raz interpretowany. Można łączyć, ale dla jakich celów (hint: nie zawsze celem jest szybkość, często celem jest samo połączenie-integracja)
Re: Python komunikacja z innymi językami i wydajność
Author: salmon
Date: Tue, 21 Jul 2009 06:25
Date: Tue, 21 Jul 2009 06:25
14 lines
1792 bytes
1792 bytes
On Jul 20, 6:27 pm, Bart Ogryczak <B.Ogryc...@gmail.com> wrote: > A jeśli chodzi o przyspieszanie to po > pierwsze Stackless, dzięki któremu można zrównoleglić Co zrównoleglić? Mikrowątki ciągle działają na jednym rdzeniu... >po drugie >Unladen Swallow (http://code.google.com/p/unladen-swallow/wiki/ProjectPlan). Póki co sami twórcy nie zalecają tego używać produkcyjnie, aczkolwiek przyszłościowe. Pozdrawiam, Łukasz Oleś
Re: Python komunikacja z innymi językami i wydajność
Author: Bart Ogryczak
Date: Tue, 21 Jul 2009 08:26
Date: Tue, 21 Jul 2009 08:26
9 lines
1872 bytes
1872 bytes
On Jul 21, 8:25 am, salmon <lukaszo...@gmail.com> wrote: > On Jul 20, 6:27 pm, Bart Ogryczak <B.Ogryc...@gmail.com> wrote: > > > A jeśli chodzi o przyspieszanie to po > > pierwsze Stackless, dzięki któremu można zrównoleglić > > Co zrównoleglić? Mikrowątki ciągle działają na jednym rdzeniu... Ale możesz je przerzucać z jednego VMa na drugi. Nawet po sieci.
Re: Python komunikacja z innymi językami i wydajność
Author: salmon
Date: Tue, 21 Jul 2009 19:01
Date: Tue, 21 Jul 2009 19:01
8 lines
1751 bytes
1751 bytes
On 21 Lip, 10:26, Bart Ogryczak <B.Ogryc...@gmail.com> wrote: > Ale możesz je przerzucać z jednego VMa na drugi. Nawet po sieci. Hmm, pierwszy raz słyszę o tym, masz jakiś link do dokumentacji/ przykładów? Pozdrawiam, Łukasz Oleś
Re: Python komunikacja z innymi językami i wydajność
Author: Paulina Woźniak
Date: Wed, 22 Jul 2009 00:11
Date: Wed, 22 Jul 2009 00:11
12 lines
2017 bytes
2017 bytes
On 21 Lip, 21:01, salmon <lukaszo...@gmail.com> wrote: > On 21 Lip, 10:26, Bart Ogryczak <B.Ogryc...@gmail.com> wrote: > > > Ale możesz je przerzucać z jednego VMa na drugi. Nawet po sieci. > > Hmm, pierwszy raz słyszę o tym, masz jakiś link do dokumentacji/ > przykładów? > > Pozdrawiam, > Łukasz Oleś Pewnie chodzi o to: http://www.stackless.com/wiki/Pickling
Re: Python komunikacja z innymi językami i wydajność
Author: Łukasz
Date: Wed, 22 Jul 2009 00:12
Date: Wed, 22 Jul 2009 00:12
12 lines
2004 bytes
2004 bytes
On 21 Lip, 21:01, salmon <lukaszo...@gmail.com> wrote: > On 21 Lip, 10:26, Bart Ogryczak <B.Ogryc...@gmail.com> wrote: > > > Ale możesz je przerzucać z jednego VMa na drugi. Nawet po sieci. > > Hmm, pierwszy raz słyszę o tym, masz jakiś link do dokumentacji/ > przykładów? > > Pozdrawiam, > Łukasz Oleś pewnie chodzi o to: http://www.stackless.com/wiki/Pickling
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads