Python am Arbeitsplatz

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Hm, mich wundert sowieso, dass die bsherige Schnittstelle nicht einfach läuft. Python ist doch abwärtskompatibel, damit müsste alles, worauf die Entwickler von MySQl zurückgreifen doch auch in Version 2.5 funktionieren.
Würde gerne mal ausprobieren, inwieweit Version 2.5 wirklich auch schneller ist. Möchte es aber erst installieren, wenn ich dann auch gleich normal weiter entwicklen kann. Hierbei spielt MySQL eine Rolle.

Kennt jemand einen aktuellen Vergleich der Geschwindigkeiten von Python und Java? Ich habe nichts aktuelles im Netz gefunden und kanna uch nicht einschätzen, ob solche "Benchmarks" wirklich aussagekräftig sind.
Mich interessiert das, weil wir auf Arbeit Java einführen. Ist sicherlich spannend, doch mir wäre Python eigentlich viel lieber. Mein Chef argumentiert u.a. wegen der Geschwindigkeit aber auch wegen der größeren Bekanntheit und wesentlich mehr bekannten Großprojekten eher für Java und ich denke, es ist nicht möglich, wirklich etwas dagegen zu sagen.

Viele Grüße und ich würde mich sehr über eine Antwort freuen, weil mir das Thema ziemlich wichtig ist.
Mir macht die Entwicklung mit Python und wxPython unheimlich viel Spaß. Erst recht, seitdem ich mit dem Plugin PyDEV uvm. in Eclipse eine sehr angenehme IDE gefunden habe.

Viee Grüße
JR

Edit (Leonidas): Von [update2] Python 2.5 final veröffentlicht gesplittet.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

JR hat geschrieben:Hm, mich wundert sowieso, dass die bsherige Schnittstelle nicht einfach läuft. Python ist doch abwärtskompatibel, damit müsste alles, worauf die Entwickler von MySQl zurückgreifen doch auch in Version 2.5 funktionieren.
Steht im [wiki=Windows Binaries#WhyNotTakeOldBinaries]Wiki[/wiki].
JR hat geschrieben:Kennt jemand einen aktuellen Vergleich der Geschwindigkeiten von Python und Java? Ich habe nichts aktuelles im Netz gefunden und kanna uch nicht einschätzen, ob solche "Benchmarks" wirklich aussagekräftig sind.
Benchmarks sind generell nicht besonders aussagekräftig - das haben die Python-Entwickler selbst beim Need For Speed-Sprint festgestellt.
Aber du kannst dir mal den Shootout ansehen und um mal ganz grob zu peilen.
JR hat geschrieben:Mich interessiert das, weil wir auf Arbeit Java einführen. Ist sicherlich spannend, doch mir wäre Python eigentlich viel lieber. Mein Chef argumentiert u.a. wegen der Geschwindigkeit aber auch wegen der größeren Bekanntheit und wesentlich mehr bekannten Großprojekten eher für Java und ich denke, es ist nicht möglich, wirklich etwas dagegen zu sagen.
Also die vielen Threads über die Vorteile von Python gegenüber Java kannst du doch selber mit der Boardsuche finden. Hängt eben ab, was ihr programmieren wollt - oft ist es eben so, dass weniger die Ausführungsgeschwindigkeit wichtig ist, sondern die Geschwindigkeit mit der das Programm geschrieben ist. Und da ist Python oft am längeren Hebel. Ebenso kann man Python einfacher lernen als Java.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Hi!

Zu deinem letzten Absatz. Genau das ist meinem Chef auch bewusst. Um ihn zu zitieren:

"Um schnell etwas gefordertes >> hinzuschweinern << ist Python sicher eine der derzeit angesagtesten und praktischsten Sprachen. Es nimmt dem Entwickler unheimlich viel Arbeit ab. Doch wenn es darum geht einen selektierten Zugriff auf eine große Datenmenge o.ä. zu machen, ist es schon sehr entscheidend, wenn ca. 100 Mitarbeiter eines potenziellen Kunden über Jahre hinweg für solch eine Operation immer wieder z.B. 10 und nicht 5 Sekunden warten müssen."

Aber gut, ich lese mir die Posts nochmal durch. Habe ich vor ein paar Wochen auch schon mal etwas durchgestöbert.

So long
JR
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

JR hat geschrieben:"Um schnell etwas gefordertes >> hinzuschweinern << ist Python sicher eine der derzeit angesagtesten und praktischsten Sprachen.
In Python etwas hinzuschweinern? Ich rate deinem Chef sich erst zu informieren bevor er Blödsinn redet.
Mann kann sowohl in Java als auch in Python mist schreiben, jedoch ist ein gut geschriebenes Python-Programm in Python kürzer, wartungsärmer und klarer als ein äquivalentes java-Programm, eben weil es vieles den Programmierer abnimmt.

Und die 5 Sekunden unterschied zwischen java und Python sind recht egal, wenn man bedenkt, dass der Kunde ein angefordertes Feature z.B. 3 Monate früher als Python-Implementation bekommt, als eine Java-Version, weil sich die Entwickler mit der Verbosität von Java rumschlagen. Außerdem hat dein Chef vergessen, dass Rechner auch immer schneller werden, und bei der nächsten Hardware und Software generation beträgt der Unterschied zum Beispiel nur noch 2 Sekunden. CPython ist laut den Benchmarks seit Version 2.3 immer schneller geworden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Hi nochmal!

Mein Chef hat es garantiert anders gemeint, wie das scheinbar für dich rüber kam. Wenn es darum geht schnell einen Kundenwunsch irgendeine Erweiterung in der Anwendung zu entwicklen, dann schweinert man halt mal rum. Was gar nicht negativ ist. Denn für kleinere aber wirksame Anpassungen müssen wir Entwickler ja nicht immer weiß ich wie weit voraus denken und alles in Bibliotheken verfrachten.
Wir haben zur Zeit ein paar kleine Workshops gemacht. Vor etwa drei Wochen hat ein Kollege einen Vortrag über Java, vor einer Woche habe ich einen ebenso dreistündigen Vortrag über Python gehalten.

Cheffe hält denke ich schon viel von Python und es war auch seine Idee, dass ich meine Hobbyprogrammierung (eine Flugplatzsoftware) mit Python erstelle. Für den Vorschlag bin ich ihm dankbar. Zunächst wurde es eine Webapplikation in ZOPE bzw. Plone. Doch diese Browseranwendung ist mir viel zu lahm. Bildaufbau ist ätzend...

Was benutzt du eigentlich zur Entwicklung von GUI's? Auch wxPython? Ich habe da schon wieder ein kleines Problemchen :-( mit der wx.ListCtrl.

Grüße dich
Jamil
BlackJack

Solange man nicht "number crunching" betreibt, würde ich keine all zu grossen Unterschiede in der Laufzeit erwarten. Die meisten "Business"-Anwendungen arbeiten mit Datenbanken, die Selektion ist also Sache der Datenbanksoftware und der Flaschenhals ist die Datenübertragung. Bleibt noch die Anzeige und Dateneingabe. Da wartet die Anwendung meistens auf den Anwender und nicht umgekehrt.

Ach ja: Falls man *doch* mit Zahlen zu tun hat, gibt's numarray bzw. numpy.
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Hi BlackJack!

Ich denke, so, wie du es beschreibst, habe ich es auch bisher eingeschätzt. Ich muss einfach mal einen Test fahren, wo ich z.B. 1000.000 Datensätze in einer Liste anzeigen lasse und dann einen Filter zum Selektieren auf die Daten los lasse.

Nach dem Motto. Liste eine Millionen Personen mit Namen etc. auf und zeige mir alle an, wo "... WHERE pers_nachname LIKE '%hmidt%' ist.

Jedenfalls habe ich zu Spüren bekommen, wieviel Geschwindigkeit man gewinnt, wenn man anstelle mehrerer Anfragen an die DB über eine Schleife ein ausgetüfteltes Statement formuliert und absetzt.
Sehr bemerkenswert.

Also dann viele Grüße
Jamil
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Die Behauptung, "Scriptsprachen" sind nur was für Quick'n'dirty ist einfach lächerlich. Jemand, der sich keine Mühe gibt oder keine Ahnung hat oder sich die Zeit nicht nimmt, schreibt immer schlechten Code - vollkommen unabhängig von der Sprache.

Es ist vertretbar, konservativ zu sein. Es ist aber unnütz, Dinge mit fadenscheinigen Argumenten abzutun. Gerade bei Programmiersprachen gibt es viele Vorteile. Als jemand, der mit Java und Python gearbeitet hat, kann ich sagen, Python ist definitiv *VIEL* (SEHR VIEL!) produktiver als Java. Die Ausführungsgeschwindigkeit ist heutzutage weitaus weniger relevant als früher - gut daran zu sehen, wie verbreitet das "fette, langsame" Java heute eben ist. Flaschenhälse kann man in Python einfach in C auslagern und fertig ist die Laube.

Da dein Chef aber offenbar nicht bereit ist, sich damit auseinander zu setzen, investiere die Energie lieber woanders. Und sei doch froh, dass du mehr Programmierarbeit leisten musst, dann wird dein Chef dich auch länger brauchen und du hast einen sichereren Arbeitsplatz ;)
Zuletzt geändert von Y0Gi am Donnerstag 16. November 2006, 22:52, insgesamt 1-mal geändert.
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Hi YOGi!
Die Behaupt, "Scriptsprachen" sind nur was für Quick'n'dirty ist einfach lächerlich. Jemand, der sich keine Mühe gibt oder keine Ahnung hat oder sich die Zeit nicht nimmt, schreibt immer schlechten Code - vollkommen unabhängig von der Sprache.
Wie kommst du auf die Bemerkung? Von meinem Chef oder mir kam sie nicht.
Ich selbst habe mit Java noch nicht programmiert. Aber ein 3 Stunden Vortrag über Java hat mir den Eindruck gebracht, dass ich Python dennoch auch wenn ich beides kann, wesentlich besser finden werde. U.a. weil man gewisse Dinge in Null-Komma-Nix besser hinzaubern kann, als man es sich vorher ausgedacht hat ;-)[/quote]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

JR hat geschrieben:Für den Vorschlag bin ich ihm dankbar. Zunächst wurde es eine Webapplikation in ZOPE bzw. Plone. Doch diese Browseranwendung ist mir viel zu lahm. Bildaufbau ist ätzend...
Zope ist nicht gerade für seine Geschwindigkeit bekannt. Deswegen hat zum beispiel der Schockwellenreiter, Jörg Kantel, seinen Blog von COREBlog auf ein anderes System umgestellt, da sein ZOPE Server durch die vielen Hits quasi ausgelastet war. Aber sieht dir mal die kleinen Programme unter d.b.d an, sie nutzen alle Python und MySQL und sind (subjektiv) ähnlich schnell wie eine statische Seite.
Das ist alles eine Sache welche Bibliotheken man benutzt. So sollen Java-GUIs in SWT auch schneller sein als Swing. Ebenso ist es unter Python, dass ein riesiges Framework etwas (oder viel) langsamer ist als ein kleineres.
JR hat geschrieben:Was benutzt du eigentlich zur Entwicklung von GUI's? Auch wxPython? Ich habe da schon wieder ein kleines Problemchen :-( mit der wx.ListCtrl.
Ich benutze PyGTK. Aber wir schweifen ab, ich glaube ich sollte den Thread sowieso splitten.

Edit (Leonidas): Wie angekündigt, Thread gesplittet.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

JR hat geschrieben:
Die Behaupt, "Scriptsprachen" sind nur was für Quick'n'dirty ist einfach lächerlich. Jemand, der sich keine Mühe gibt oder keine Ahnung hat oder sich die Zeit nicht nimmt, schreibt immer schlechten Code - vollkommen unabhängig von der Sprache.
Wie kommst du auf die Bemerkung? Von meinem Chef oder mir kam sie nicht.
Das wollte ich damit auch nicht gesagt haben. Vielmehr ist es ein landläufiger Irrglaube. Andererseits hat dein Chef mit "mit Python etwas hinzuschweinern" im Prinzip wohl darauf referenziert.
JR
User
Beiträge: 286
Registriert: Montag 20. Februar 2006, 16:43
Wohnort: Berlin

Genauso hat er es nicht gemeint. Kenne ihn seit einigen Jahren.
Macht aber nichts :-)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Leonidas hat geschrieben:Zope ist nicht gerade für seine Geschwindigkeit bekannt. Deswegen hat zum beispiel der Schockwellenreiter, Jörg Kantel, seinen Blog von COREBlog auf ein anderes System umgestellt, da sein ZOPE Server durch die vielen Hits quasi ausgelastet war.
Hallo Leonidas!

Zope ist aber auch nicht dafür bekannt, besonders langsam zu sein. Es kommt wie immer darauf an, was von einer Website abverlangt wird und wie sie programmiert wird.

http://sw3.at/ ist eine reine Zope-Site. (ohne optimierung)

Dass du im gleichen Atemzug kleine Django-Progrämmchen als viel schneller präsentierst, kann ich so nicht stehen lassen.

Zope-Websites sind schnell. Plone-Sites sind in der Entwicklung langsam. Der Debug-Modus wirkt sich negativ auf die Performance aus. Wenn das in Plone eingebaute CacheFu aktiviert wird, dann sind sogar Plone-Sites eine Rakete. Aber auch ohne CacheFu sind Plone-Sites nicht gerade langsam, wenn man nicht jeden unnützen Blödsinn aktiviert lässt.

Zope ist ein gutes Framework und ich vergleiche es gerne mit dem Fundament eines Hochhauses. Wie der Rest des Hochhauses gebaut wird, dass hängt vom Architekten und von den Ingenieuren ab.
Wenn ein Ingenieur den Aufzug immer zuerst in den Keller fahren lässt und dann erst in den 10. Stock, dann dauert eine Fahrt vom 9. in den 10. Stock länger als sie sein müsste. Das Fundament steht da und kann daran nichts ändern.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Leonidas hat geschrieben:Und die 5 Sekunden unterschied zwischen java und Python sind recht egal, wenn man bedenkt, dass der Kunde ein angefordertes Feature z.B. 3 Monate früher als Python-Implementation bekommt
Hi!

Fünf Sekunden ist für den ständigen Benutzer einer Software sogar extrem viel. Z.B. hat man festgestellt, dass ein Programm spätestens nach einer Sekunde reagieren muss, sonst werden die meisten Benutzer nervös. Aber dieser so extrem dargestellte Unterschied ist sowiso nicht der Fall.

Das geht sogar noch weiter. In Python sind die Programme viel schneller fertig programmiert. Von diesen drei Restmonaten, wie oben als Beispiel aufgezeigt, kann man da noch locker einen Monat für allfällige Optimierungen heran ziehen. Dann ist das Programm schneller fertig, schnell, wartbar, erweiterbar und man hat sich zwei Monate kostenintensive Programmierung gespart.

Wie unter http://www.python-forum.de/topic-7814.html aufgezeigt, ist es ein Klax, C- oder C++-Programme in Python einzubinden. So können rechenintensive Codeteile nach C ausgelagert werden. Ein Gespann aus Python- und C-Programmierern ist für rechenintensive GUI-Programme also, meines Erachtens, als Ideal anzusehen.

Ohne große Quellcodeänderung lässt sich Python auch noch mit http://psyco.sourceforge.net/ beschleunigen.
Will man wirklich was schnelles produzieren, dann bindet man noch PyRex http://www.cosc.canterbury.ac.nz/greg.e ... hon/Pyrex/ mit ein.

Datenbankzugriffe werden sowiso an die, meist in C geschriebenen, Schnittstellenmodule weitergereicht. Da hat Java auch keinen großen Vorsprung.

Python ist die Glue-Language zwischen den, meist hochoptimierten, Schnittstellenmodulen.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dann machen wir doch mal ein kleinen Test!

Code: Alles auswählen

> http://heise.de.........................
>>> average: 0.39sec

> http://google.de.........................
>>> average: 0.21sec

> http://www.python-forum.de.........................
>>> average: 0.73sec

> http://sw3.at/.........................
>>> average: 0.34sec

> http://htfx.eu/.........................
>>> average: 0.35sec

> http://www.djangoproject.com/.........................
>>> average: 0.57sec
Hm!
Getetstet mit: http://www.python-forum.de/topic-7447.html
Testwerte:
count=5, threads=5, delete=3

htfx.eu ist PyLucid als CGI und komplett ohne Cache, weil der noch nicht implementiert ist.

EDIT: Ach, turbogears.org ist gerade überhaupt nicht erreichbar.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Da wir schon mal dabei sind, nochmal ein Test. Nun auch mit pocoo.
Ich hab mal die Anzahl der Messungen auf count=15 erhöht.

Diesmal sind es alles "Unterseiten":

Code: Alles auswählen

> http://www.python-forum.de/post-49366.html...........................................................................
>>> average: 5.33sec

> http://flying.circus.pocoo.org/post/1501...........................................................................
>>> average: 0.80sec

> http://sw3.at/arbeiten_sw3...........................................................................
>>> average: 0.35sec

> http://htfx.eu/index.py/Stills/...........................................................................
>>> average: 0.33sec

> http://www.djangoproject.com/documentation/...........................................................................
>>> average: 0.50sec
phpBB ist ech lahm ;)

Da ich es nicht glauben kann, das PyLucid am schnellsten ist, noch eine Messung:

Code: Alles auswählen

> http://pylucid.htfx.eu/index.py/About/Features/...........................................................................
>>> average: 0.35sec
Ich dachte das doofe CGI wäre so lahm??? Hab ich nur einen schnelleren Server als alle anderen??? Mal andere Server messen:

Code: Alles auswählen

> http://pylucid.sourceforge.net/...........................................................................
>>> average: 0.71sec

> http://blinx.ybgood.de/PyLucid/index.py/Projekte/Python/...........................................................................
>>> average: 1.53sec

> http://www.mactricks.de/index.py/NachrichtenInfo/...........................................................................
>>> average: 0.46sec

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Darf ich die Aussagekräftigkeit so eines Tests hinterfragen? Zumindest was die Vergleichbarkeit der Zahlen in Bezug auf die eingesetzten Frameworks angeht.

Da spielt doch auch der Weg den die Pakete durch's Netz nehmen müssen eine Rolle, und wieviel Last die Systeme gerade haben, was für Rechner das überhaupt sind, ob Proxies/Caches dazwischen geschaltet sind, wie die Datenbank angebunden ist, und so weiter.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Da hast du natürlich vollkommen Recht!
Natürlich müsste man die Frameworks alle auf dem selbern Server haben, halt gleiche Bedingungen für alle schaffen... Aber mach das mal eben so :)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Jo, der "Test" ist, vorsichtig ausgedrückt, total witzlos. Es werden unzählige Dinge nicht berücksichtigt: diverse Hardware-Komponenten, Treiber, Betriebssystem, Optimierung dessen, Internet-Anbindung, Auslastung der Maschine, Auslastung des Uplinks, verwendete Netzwerkkomponenten, geografische Lage bzw. Direktheit der Anbindung an die "Hauptleitungen" des Internets, technische Anforderungen der Site sowie dessen Auswahl und Integration (Datenbank, Template-Engine, Foren, bei jedem Seitenaufruf geholte dynamische Inhalte, ...), Deployment, Auslagerung statischer Inhalte auf einen anderen Server, ...
Antworten