🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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ść
#26370
Author: walec51
Date: Tue, 14 Jul 2009 22:00
20 lines
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ść
#26371
Author: Jacek Czerwinski
Date: Tue, 14 Jul 2009 22:27
37 lines
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ść
#26372
Author: walec51
Date: Wed, 15 Jul 2009 00:58
21 lines
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ść
#26373
Author: Rob Wolfe
Date: Wed, 15 Jul 2009 14:59
72 lines
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ść
#26374
Author: Bart Ogryczak
Date: Mon, 20 Jul 2009 16:27
31 lines
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ść
#26375
Author: Jacek Czerwinski
Date: Mon, 20 Jul 2009 17:07
19 lines
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ść
#26376
Author: salmon
Date: Tue, 21 Jul 2009 06:25
14 lines
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ść
#26377
Author: Bart Ogryczak
Date: Tue, 21 Jul 2009 08:26
9 lines
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ść
#26378
Author: salmon
Date: Tue, 21 Jul 2009 19:01
8 lines
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ść
#26379
Author: Paulina Woźniak
Date: Wed, 22 Jul 2009 00:11
12 lines
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ść
#26380
Author: Łukasz
Date: Wed, 22 Jul 2009 00:12
12 lines
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