Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Python 2.x vs Python 3k

[es] :: Python :: Python 2.x vs Python 3k

[ Pregleda: 3181 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

perun85
Republika Srpska

Član broj: 185562
Poruke: 116
62.68.125.*



Profil

icon Python 2.x vs Python 3k22.05.2009. u 22:49 - pre 148 meseci
Imam nameru da u skorijoj buducnosti malo vise vremena posvetim Pythonu, te me interesuje vase misljenje o tome za koju verziju da se odlucim.

Na netu sam uspeo da pronadjem samo jednu knjigu u potpunosti posvecenu Pythonu 3k, pored nje pronasao sam jos nekoliko njih koje vecim delom obradjuju 2.xx i tek na kraju nude blagi osvrt na razlike sa verzijom 3. Pored nedostatka literature nisam uspeo pronaci ni jedan GUI toolkit u kome je podrzava rada sa verzijom 3 (mada ovo moze biti i posledica mog nepoznavanja dostupnih GUI biblioteka).

Da ne zaboravim, u pythonu bih radio administrativne skripte i poneku GUI aplikaciju (Linux platforma).

Unapred hvala na odgovorima.
 
Odgovor na temu

exdatis
Morar Zivica
Programer

Član broj: 92230
Poruke: 107
85.222.217.*



+1 Profil

icon Re: Python 2.x vs Python 3k25.05.2009. u 12:28 - pre 148 meseci
Ja sam probao 2.5 i 2.6 i zadovoljan sam bio(ne koristim python vise, vratio sam se perlu).
Ako radis na M$ win neces imati nekih problema sa ovim verzijama, imas SPE editor sa
alatom za generisanje grafike(Wx biblioteka.). To uglavnom lepo radi, relativno male izmene
su potrebne za linux(ja pisem iskljucivo na linux-u) ali ako pises na linux-u videces da M$ neke
stvari nevidi kako ocekujes(sitnice, nemoj koristiti panel u dijalozima itd.). Za ostale verzije nisam siguran.
Ja sam napravio mali test, imam bazu sa oko 3.5 miliona podataka od kojih jedna tabela
ima nesto preko 300 000
podataka( mysql baza 70 tabela). Napravio sam prostu console app. gde najpre belezim vreme starta app
( i prikazujem na ekranu) potom stampam sukcesivno prva dva polja, zatim pokazujem vreme(local) zavrsetka
racunam razliku i prikazujem ukupno vreme potrebno za izvrsavanje procesa u perlu i u pythonu(ista ideja)
Rezulat je sledeci:
Perl max. 30 sekundi
Python max. 2.5 minuta.

Prosek(10-ak izvrsavanja):
Perl 25 sekundi
Python: 1.15 min.

Da ne raspravljamo o drugacijem tipu procesa, jer sam i to (imam iskustva) probao.
generisanje izestaja(txt, html, csv). Dakle u obradi podataka sa RDBMS-a, brzo ali moze i bolje.
Naravno minut je sitnica nasparam 300 000 podataka, ali...
Nemam savet, naravno, sve je dobro zavisi sta radis i koji su zahtevi poslodavca. Licno mislim da je
Perl za sada neprevazidjen(u sferi dinamickih jezika koji se interpretiraju),
samo treba malo truda. ako nemas potrebe za "velikim" stvarima i imas
afiniteta prema OOP, onda ti je python ODLICAN IZBOR!
Srecno!
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Python 2.x vs Python 3k25.05.2009. u 14:40 - pre 148 meseci
@perun85:
Generalno je preporucljivo da se drzis 2.6 verzije, narocito ako se koriste biblioteke koje jos nisu portovane na 3 verziju. Takodje, vredi sacekati verziju 3.1, jer ce uz nju doci i optimizacije i bolja brzina izvrsavanja.

No, definitivno baci pogled na python3 i upoznaj se sa novinama (teorijski i prakticno) kako bi se bolje spremio za novu verziju.


@exdatis:
Poznato je da je python I/O (narocito ispis na konzolu) relativno spor, ali mi brojke koje si ti dobio nekako izgledaju cudno - python ne bi trebalo da toliko zaostaje za perlom.
Ako je moguce, objavi testove kako bismo videli o kakvim se tacno testovima radi (mozda ima prostora za optimizaciju)..

Pre par nedelja smo diskutovali na tu temu (brzina izvrsavanja), bilo je par dobrih komentara..
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

perun85
Republika Srpska

Član broj: 185562
Poruke: 116
62.68.125.*



Profil

icon Re: Python 2.x vs Python 3k25.05.2009. u 17:27 - pre 148 meseci
Hvala na savetima.
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Python 2.x vs Python 3k26.05.2009. u 09:59 - pre 148 meseci
Nema na cemu, tu smo ako jos sta zatreba.
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

exdatis
Morar Zivica
Programer

Član broj: 92230
Poruke: 107
85.222.217.*



+1 Profil

icon Re: Python 2.x vs Python 3k26.05.2009. u 10:35 - pre 148 meseci
Test:
Pa jednostavno je napisacu pseudo:
python-
1. Belezim vreme starta
2 ispisujem ga na ekranu
3. pisem upit(prost) "Select*From tabela"
4. konekcija sa bazom
5. kreiram kursor
6.izvrsavam upit
for i in cursor:
stampam prvi i drugi slog
7. diskonektujem se
8. Belezim vreme zavrsetka
9. Prikazujem vremena i razliku;
Perl -
Isto to samo koristim
my $query = $dbh->prepare($sql) || die print "Ono sto je greska"
$query->execute() || die print "Opet greska..."
u while petlji raspakujem rezultat i stampam prva dva polja
finisiram upit, diskonektujem se
ostalo je isto.

Imam i GUI app i u prelu i u python-u koje rade sa slicnim bazama
samo manje zapisa (oko 300 000 ukupno).
Opet je perl "vidno" brzi. Takodje koristim regularne izraze za sredjivanje
CVS izvestaja koje posle guram u bazu koja odgovara opisu sloga CVS.
i iskustva su slicna.
Nije mi namera da presudjujem u smislu bolji, brzi ili bilo sta. Svi alati su
dobri ako napises dobru app. Specificne namene traze i specificne alate,
nekom je i jedno i drugo sporo pa ce se potruditi u C-u. Rezultati su u oba
slucaja sasvim dobri i niukom slucaju nisu za zabrinjavanje, a i ovo je domenu
baza podataka, nepise se samo to ima i drugih stvari gde brzina moze da prevagne
u korist drugog jezika itd...
Pozdrav!
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Python 2.x vs Python 3k26.05.2009. u 11:40 - pre 148 meseci
Hm, pseudo kôd nam nista ne znaci ;) - bez konkretnog python isecka iz kôda kojim komuniciras sa bazom i preuzimas podatke bojim se da ne verujem rezultatima koje si dobio.
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

exdatis
Morar Zivica
Programer

Član broj: 92230
Poruke: 107
85.222.217.*



+1 Profil

icon Re: Python 2.x vs Python 3k26.05.2009. u 13:20 - pre 148 meseci
Ok, sutra cu od kuce prepisati kod i poslati(bazu napravite sami prostim inkrementiranjem jer to ne mogu da posaljem,
zakon o tajnosti podataka, a tabela je deo baze vezane za poslove klinickog centra(zdravstvo(regionalna baza))).
 
Odgovor na temu

exdatis
Morar Zivica
Programer

Član broj: 92230
Poruke: 107
85.222.217.*



+1 Profil

icon Re: Python 2.x vs Python 3k27.05.2009. u 07:36 - pre 148 meseci
Opet ja, evo koristenog koda:
python:
------------------------------------------------------------------------------------------------------------------------------
#!/usr/bin/env python

import MySQLdb
import datetime


start = datetime.datetime.now()
print "Vreme starta: %s " % start
sql = "Select*From <tabela> "
dbh = MySQLdb.connect('db_host', 'db_user', 'db_pass', 'db_name')
c = dbh.cursor()
c.execute(sql)
counter = 0
for i in c:
print "%d %s " % (i[0], i[1])
counter += 1

dbh.close()
end = datetime.datetime.now()
razlika = end - start
print "Pocetak procesa: %s " % start
print "Kraj procesa: %s " % end
print "Utroseno vreme: %s broj slogova: %d" % (razlika, counter)
------------------------------------------------------------------------------------------------------------------------------
perl:
------------------------------------------------------------------------------------------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
use DBI;

BEGIN
{
require 'exdatis.pm';
Module->import;
}

my $start = exdatis::current_time();
printf("Vreme starta: %s\n", $start);
my $sql = "Select*From <tabela>";
my $dbh = exdatis::dbh_terminal('db_name','db_host','db_user','db_pass');
my $query = $dbh->prepare($sql) || die exdatis::query_error($dbh);
$query->execute() || die exdatis::query_error($dbh);
my $counter = 0;
while(my $i = $query->fetchrow_arrayref()){
my $id = $i->[0];
my $name = $i->[1];
printf("%s %s\n", $id, $name);
$counter++;
}
$query->finish();
$dbh->disconnect();
my $end = exdatis::current_time();
printf("Start: %s : End: %s Ukupno slogova: %d", $start, $end, $counter);
------------------------------------------------------------------------------------------------------------------------------
OBJASNJENJE:
ja sam napravio sebi modul exdatis.pm sa razlicitim funkcijama koje stalno koristim(konekcija kada je u pitanju graficki interfejs,
konekcija kada se radi u terminalu, formatiranje datuma, vremena i jos mnogo toga). Nista posebno se ne koristi u tom modulu,
pomocu funkcije "localtime" dobijam niz vrednosti koji posle koristim i formatiram po potrebi.Dakle standardne stvari.
NARAVNO:
u svojim python app skoro sve stavljam u try, except, else blokove, stampam greske i sl. Ovde to nisam radio prilikom testiranja,
Umesto mojih funkcija iz modula exdatis upotrebite prosto DBI->conn... a za vreme bilo modul za obradu vremena i datumsku
artmetiku bilo prosto localtime. Ne prikazujem ovde svoj modul jer je prilicno velik skript.
Test je izvrsen na masini(uvek obavljam testove na najslabijoj masini) 1.7GHz i 128 MB RAM
Odnos je isti i sa AMD 2.6 Ghz 512MB RAM
U oba slucaja OS je CentOS5, a isto se dobija i sa openSuSe11.
Pozdrav i bas me zanima misljenje!
p.s. kod for petlje u poruci nisam uspeo da napravim uvlacenje kako treba...sorry
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Python 2.x vs Python 3k27.05.2009. u 16:17 - pre 148 meseci
Nemam instaliran MySQLdb biblioteku (vec odavno iskljucivo koristim SqlAlchemy ORM biblioteku, koju preporucujem) ali mi se cini da u tvom
kôdu fali rezultat = c.fetchall() poziv koji vraca listu rezultata u varijabli rezultat. Time mozes bez problema da izbegnes i varijablu counter i automatsko uvecavanje vrednosti - umesto toga pozoves lepo len(rezultat). Probaj da izmenis svoj python kôd i izmeri ponovo.

Interesantno bi bilo merenje podeliti u dva - izmeriti komunikaciju s bazom i preuzimanje rezultata zasebno od prikazivanja. Kao sto sam vec ranije spomenuo, poznata je cinjenica da je ispisivanje na konzolu relativno sporo kod python interpretera.

Da zakljucim, svakako bih uvek preporucio koriscenje ORM biblioteke umesto pisanja sirovog SQL-a i obrade podataka dobijenih na taj nacin. Prednosti su bukvalno ogromne!
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

exdatis
Morar Zivica
Programer

Član broj: 92230
Poruke: 107
85.222.217.*



+1 Profil

icon Re: Python 2.x vs Python 3k28.05.2009. u 07:59 - pre 148 meseci
Pozdrav Alex!

Slazem se ja sa tobom, moguce je i drugacije izvuci rezultat, ali...
taj counter ne sluzi prevashosno da broji slogove, to se moze uraditi na mnogo
nacina i brze naravno, problem je sto mi zivimo u drzavi koja nema utvrdjene i
bar delimicno postojane standarde za mnoge poslove, pa se cesto moraju pisati
nesto kao genericki algoritmi ili se u samoj petlji obradjivati podaci, pa i pozivati
drugi sql upiti da bi dobio ono sto ti treba. Posto kod nas kako ko dodje da vlada
smisli nesto novo, prinudjen si da ako zelis fleksibilnu aplikaciju, cesto koristis odnose
jedan->vise->vise pa za proste stvari imam i po pet tabela. (npr, glavna, glavna_svojstva,
svojstva_vrednosti). U tom slucaju sirovi SQL dodje neophodan. Za moje aplikacije uglavnom
je neophodno 150-300 tabela, plus nekoliko drugih oblika skladistenja podataka(slicno log fajlovima
ali ipak drugacije), jer moram da zasebno iskontrolisem(u smislu odgovornosti) svakog klijenta a app
treba da radi(trenutno na samo 50-ak racunara) na nesto preko 200 racunara. To je razlog sto moram
ovako radim, cesto u petljama koje raspakuju rezultate moram da koristim-generisem visedimenzionalne nizove koje
logicki obradjuem, izvlacim statisticke parametre isl.
Aplikacija napisana u wxPythonu mi vec nekih 5 meseci radi postojano i vrlo solidno kada je u pitanju brzina
(naravno ogranicio sam broj povratnih informacija jer u gomili nema smisla traziti nesto) pa su i korisnici
naucili da daju kvalitetnije argumente. Ipak nova app napisana u Perl-u zaista pokazuje bolje performanse.
Sve ovo opet nije razlog da neko posumnja u svoj izbor kada je python u pitanju, to je dobar jezik i puno toga
se moze lepo uraditi. Prosto za neke stvari jezik koji ima malo razlike u odnosu na python(kao ideja) moze biti
bolji izbor u jednom slucaju i losiji u drugom, nema pravila, ali sam zadovoljan stabilnoscu perla i onim sto nudi.
Pozdrav i sve najbolje u poslu!
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Python 2.x vs Python 3k28.05.2009. u 15:49 - pre 148 meseci
Hehe, upravo tvoja situacija je odlican primer gde je upotreba ORM-a (Object Relational Mapper) daleko bolje resenje od pisanja (i azuriranja) sirovog SQL-a.

Uz SqlAlchemy mozes da mapiras tabele i relacije u Python objekte kojima je znatno lakse manipulisati u Python kôdu nego sa rezultatima sirovih upita. Azuriranje i izmena mapiranja je vrlo jednostavna operacija, da ne spominjem i koliko je preglednija i citljivija. Takodje, velika prednost je da ORM mapiranje mozes da podesis da rezultate dobijas po potrebi (tzv. lazy loading)

Iz svog iskustva smem da tvrdim da je koriscenje ORM-a znatno fleksibilnije i bolje resenje.
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

exdatis
Morar Zivica
Programer

Član broj: 92230
Poruke: 107
85.222.217.*



+1 Profil

icon Re: Python 2.x vs Python 3k29.05.2009. u 06:57 - pre 148 meseci
Hvala na savetu i informaciji Alex,
svakako cu pokusati sa tom bibliotekom.
Ja i inace stalno radim nesto novo, u nekoj drugoj biblioteci i sl.
nikad se ne zadovoljavam postojecim, a sem toga i uzivam jer
volim svoj posao, i sve me interesuje(u domenu relacionih baza podataka i
obrade velikih kolicina podataka).
Da li bi bio problem da ti se eventualno obratim privatnom porukom ako
nesto nebudem razumeo kako treba?
Pozdrav!
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Python 2.x vs Python 3k29.05.2009. u 09:42 - pre 148 meseci
Slobodno se obrati ovde na forumu, za slucaj da se ne javim blagovremeno na privatnu poruku. Takodje, informacije mogu posluziti i drugim posetiocima foruma.


Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

exdatis
Morar Zivica
Programer

Član broj: 92230
Poruke: 107
85.222.217.*



+1 Profil

icon Re: Python 2.x vs Python 3k29.05.2009. u 12:19 - pre 148 meseci
Super, skinuo sam i instalirao biblioteku, malo dokumentacije,
taman imam vikend da probam rad u sqlalchemy-u.
Pokusacu sa testovima u GUI app tako da i perl i py budu
kreirani sa GTK bibliotekom. To jos nisam probao.
Pozdrav i hvala!
 
Odgovor na temu

exdatis
Morar Zivica
Programer

Član broj: 92230
Poruke: 107
85.222.217.*



+1 Profil

icon Re: Python 2.x vs Python 3k09.06.2009. u 09:42 - pre 147 meseci
Samo jos jedan komentar, nastavljam ovde iako bas nije mesto,
U pravu si bio Aleks za fetchall().
Takodje, gledajuci sta nudi sqlalchemy dobio sam par ideja i upravo
ih sprovodim u delo. zaista sam mnogo dobio ovim idejama.
Ono sto bih jos naveo je da sam prvi put ozbiljno radio sa GTK bibliotekom
i zaista sam odusevljen! Onaj TreeView je neverovatna stvar...
Ko se dvoumi oko GUI biblioteke, preporucio bih GTK. a takodje bar informativno
SqlAlchemy jer u sebi nosi ideje koje su primenljive sa bilo kojim DBI naravno, samo
napisete vama potreban model. Izvanredno.
Aleks, hvala, napravio si od mene zaljubljenika u python!
Pozdrav svima i puno srece u radu!
 
Odgovor na temu

alex
Aleksandar Radulovic
Senior Software Engineer, Spotify
Stockholm, Sweden

Član broj: 71
Poruke: 2194
*.siminn.is.

Jabber: alex@a13x.info
ICQ: -1
Sajt: www.a13x.info


+1 Profil

icon Re: Python 2.x vs Python 3k09.06.2009. u 15:01 - pre 147 meseci
Super, bas mi je drago da to cujem! :)
Alex: My favorite site is http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x
 
Odgovor na temu

[es] :: Python :: Python 2.x vs Python 3k

[ Pregleda: 3181 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.