Hallo Leute,
ich möchte nur nochmal an unser nächstes Treffen erinnern, das am Freitag
stattfindet. Der Einfachheit halber findet ihr unten die original Einladung
von Christian, wo auch Ort und Zeit vermerkt sind.
Allen, die nicht kommen können (oder wollen :-() wünsche ich schonmal ein
schönes Weihnachtsfest und guten Rutsch.
Bis dann
Stephan
---------- Forwarded Message ----------
Subject: [Python-de] Berliner Python-Stammtisch 20.12.02 18:00 mit Stollen
Date: Mon, 18 Nov 2002 12:44:24 +0100
From: Christian Tismer <tismer(a)tismer.com>
To: python-de(a)python.net
Liebe Berliner Python-Gruppe
und solche, die es werden wollen!
#### #### ####
# # # # #
#### #### ###
# # # #
#### # ####
###########################################################
# Am Freitag, den 20. Dezember 2002 findet der nächste #
# Berliner Python-Stammtisch statt, #
# #
# wieder in der Räumen der GraS GmbH, Heilbronner Str. 10,#
# 10711 Berlin, 2. Stock, 18:00. #
###########################################################
Die Bezeichnung "Berliner Python Stammtisch" ist ganz
gut angekommen. In Wirklichkeit heißt "BPS" natürlich
"Bier Pro Stunde" (oder Bit/Sec).
Nein, ganz im Ernst, das letzte Treffen hatte sehr
interessante Themen. Vermutlich werden wir ab jetzt
jemanden bitten, zusammenfassend zu protokollieren
und die Themen in einem Wiki zusammenstellen.
Außerdem geistert die Idee herum, evtl. einen Verein
zu gründen. Vielleicht schaffen wir es ja tatsächlich,
gemein und nützig zu sein. Zumindest wäre das ein
Thema für dieses Treffen.
Es hat sich ferner herausgestellt, daß nicht alle
Berliner Python-Interessierten auf der python-de
Liste sind nd somit garnicht wissen, daß es BPS
gibt. Ich habe daher einige mir bekannte Firmen ins
bcc genommen. Wenn jemand sachdienliche Hinweise
zur Ergreifung weiterer unidentifizierter Pythonen
hat, bitte Bescheid sagen oder die Einladung weiterleiten.
Auch eine Weiterleitung an die Berliner Unis und
Schulen würde helfen, dieses Treffen für Berlin
und Brandenburg angemessen zu vergrößern.
Da es kurz vor Weihnachten ist, werde ich wohl für ein
wenig Stollen sorgen. Es wäre schön, wenn ich vorab
einen Überblick hätte wieviele kommen werden, also
danke an Alle für eine kurze Notiz.
Hat jemand ein Rezept für Python in Perlhuhnsoße?
ciao -- chris
p.s.: Den Firmen GraS und ImageScience sei hiermit für
die freundliche Unterstützung gedankt.
--
Christian Tismer :^) <mailto:tismer@tismer.com>
Mission Impossible 5oftware : Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9a : *Starship* http://starship.python.net/
14109 Berlin : PGP key -> http://wwwkeys.pgp.net/
work +49 30 89 09 53 34 home +49 30 802 86 56 pager +49 173 24 18 776
PGP 0x57F3BF04 9064 F4E1 D754 C2FF 1619 305B C09C 5A3B 57F3 BF04
whom do you want to sponsor today? http://www.stackless.com/
_______________________________________________
Python-de maillist - Python-de(a)starship.python.net
http://starship.python.net/mailman/listinfo/python-de
-------------------------------------------------------
_______________________________________________
Python-de maillist - Python-de(a)starship.python.net
http://starship.python.net/mailman/listinfo/python-de
Ich habe mir heute mal die Zeit genommen, das Vorabdokument zu Python 2.3
durchzulesen. (Siehe http://www.python.org/dev/doc/devel/whatsnew/). Die
neuen Features sind bunt gemischt:
- Eine Klasse für Mengen in der Standard-Bibliothek
- Vereinfachte Generatoren
- Für Sourcecode kann ein Encoding angegeben werden (hallo Unicode)
- Unterstützung von Unicode-Dateinamen für NT
- Verbesserte Unterstützung für die verschiedenen Newline-Kennungen (\r,
\r\n, \n)
- Neue eingebaute Funktion enumerate()
- Eine Klasse fürs Logging in der Standard-Bibliothek
- Datentyp bool
- Callbacks für Codec-Fehler
- Erweiterte Slices-Syntax
Nun sind das alles schöne Sachen, aber: wäre es nicht besser, statt sich auf
ständig neue, noch exotischere Features zu stürzen, die dann von vier oder
fünf Beispielprogrammen genutzt werden aber nicht im RealLife weil: es gibt
ja noch ältere Pythonversionen; wenn statt dessen mal das *bestehende*
optimiert wird? Nimm das Beispiel "Properties": Wieviele Leute hier kennen
die Syntax und benutzen sie? Wieviele Leute kennen den Unterschied zwischen
new-style und old-style classes *wirklich* im Detail, wenn z.B. Redhat
weiter 1.5 ausliefert?
Naja.
Ich wünsche mir für Python eigentlich drei Dinge:
A) ein *deutliche* Geschwindigkeitsverbesserung
B) eine *stark* verbesserte Möglichkeit, die Speicherverwaltung zu
kontrollieren
C) eine *sicheres* rexec-Modul
Zu A kann ich das Beispiel meines pserv.cpl anführen
(http://p-nand-q.com/e/pserv.html). Zwar lies sich die Python-Version in
viel kürzerer Zeit realisieren als die C++ Version (wobei der Unterschied
auch nicht sooo krass ist: da ich auch in C++ natürlich eine
Klassenbibliothek einsetze, die mir viel Arbeit abnimmt), aber sie ist um
ein *vielfaches* größer (zum Vergleich: pserv.cpl in C++: 280 kb, keine
zusätzlichen DLLs, in Python: 546kb plus geschlagene 11.6 mb an runtime!!!!)
und um ein *deutlich* langsamer.
Ich habe es schon bei Java immer als deutliche Heuchelei empfunden, wenn man
von "schneller als C++" spricht. Wenn ich ein gegebenes Programm habe, das
interpretiert wird, dann liegt es in der gottverdammten Natur der Sache, daß
es zumindest theoretisch möglich ist, ein schnelleres native Programm zu
schreiben. Ob das im *allgemeinen* praktikabel ist, ist dahingestellt:
alles, was ich sagen kann, ist, daß es mit ein bisserl C erfahrung für mich
in der Regel tatsächlich praktikabel IST. Die Argumente für Python (und
Java) sollten nicht Geschwindigkeit sein (denn das ist einfach falsch)
sondern Portabilität, leichter wartbarer Code, Spaß am Programmieren, koole
Features und so weiter.
Ein anderes Beispiel: das neue logging modul, nach eigener Aussage "nicht
für Geschwindigkeit optimiert". So ein Scheiss! Das logging-Modul kann auch
noch so "supercoole" xml-buzzword-features haben: wenn es das Programm
runterbremst, nehm ich doch lieber ein starres C-Plugin, das dafür deutlich
weniger Zeit kostet. Ich benutze ein Modul ja nicht, damit mein Programm
irgendwelchen theoretischen Überlegungen genügt, sondern damit es
*funktioniert*.
Vielleicht sollte ich mal eine Liste von features erstellen, auf die ich
verzichten kann, wenn ich dafür kompilierten Code erhalte (wobei, du ahnst
es, Garbage Collection und Exception Handling ganz oben stehen werden ;)
Zu B: Das ist etwas, was ich vieleicht selber schreiben werde: ein Patch,
der einen alloc/free trace schreibt, damit man besser kontrollieren kann,
welche Objekte wann wo oder wo nicht freigegeben werden. Hintergrund ist
mein altes Shicks! Problem mit dem OOM-Killer, das ich trotz allem bisher
immer noch nicht eingrenzen konnte. Das ist doch lächerlich: man hat eine
Programmiersprache, in der man sich angeblich nicht mehr um den Speicher
kümmern muß, und genau da treten dann Probleme mit der Speicherverwaltung
des Betriebssystems auf - und es gibt zudem kaum eine Analysemöglichkeit!
Arg.
Zu C: rexec hat m.W. nach einige Sicherheitslücken "by design", was das
ganze Modul letztlich zu einer eher sinnlosen Spielerei verdammt. Dabei wäre
eine echte Sandbox ein Feature, mit dem Python glänzen könnte. ANSTELLE
EINES SCHIMMLIGEN BOOL-TYPES DEN DIE WELT NICHT BRAUCHT.
So, trotzdem einen guten Rutsch, und viel Spaß in 2003,
Gerson
_______________________________________________
Python-de maillist - Python-de(a)starship.python.net
http://starship.python.net/mailman/listinfo/python-de
Hallo,
wie kann ich überprüfen, ob ein Prozess, den ich mit Py gestartet habe, noch
läuft? Eine GUI-Anwendung ruft unter Linux ein Dokument mit dem
entsprechenden Programm auf (os.spawnlp(os.P_NOWAIT, ...). Die PID ist
bekannt. Die GUI-Anwendung soll nun wissen, wann ob das Programm noch läuft,
bzw. ob es beendet wurde. Ziel ist es, herauszufinden, wie lange das
entsprechende Programm genutzt wurde.
Beste weihnachtliche Grüße an alle,
Andi
_______________________________________________
Python-de maillist - Python-de(a)starship.python.net
http://starship.python.net/mailman/listinfo/python-de
Hallo liebe Liste!
Ich bin mir zwar nicht ganz sicher, ob ich die Frage bei einer apache-Liste
hätte stellen sollen, aber ich hoffe, auch hier eine Antwort zu finden.
Bei einem Provider läuft für einen Kunden ein in Python geschriebener
Interpreter für XML-Dateien. Allerdings lässt die Performance sehr zu
wünschen übrig. Das kuriose ist, dass der selbe Interpreter bei einem anderen
Kunden recht flott läuft obwohl er mehr Dateien verarbeiten muss. Zum
Vergleich:
Provider: 17 Dateien --> 10-15 sekunden
andere Kunde 35 Dateien --> 2-4 sekunden
Jetzt wurde bei dem Provider mod_python installiert bzw. einkompiliert, was
zumindest ca. 5 sekunden in der Performance bringt, aber trotz allem wird
bei jedem Aufruf des Interpreters PYTHON als neuer Prozess gestartet.
Weis jemand, wie ich den Indianer jetzt dazu überredet kriege, den
Python-Interpreter persistent zu starten????
Danke im Voraus,
Björn
PS.: Wenn zu sehr OT, bitte nich hauen, einfach Mail wegschmeissen 8~)
--
small office solutions
info(a)sosnetz.de - http://www.sosnetz.de
_______________________________________________
Python-de maillist - Python-de(a)starship.python.net
http://starship.python.net/mailman/listinfo/python-de
Wie kann man bitte aus Python beim E-Mailen eine Attachement
an einen Email anschliessen und versebden?
DAnk für jede Hilfe!
josef
_______________________________________________
Python-de maillist - Python-de(a)starship.python.net
http://starship.python.net/mailman/listinfo/python-de
Ich möchte die derzeitige vorweihnachtliche Stille auf python-de stören und
mal kundtun, was genau mich an Exceptions stört. Folgendes Beispiel:
------------- (snip here) ----------
def config(name, value):
if cfg_open():
value = cfg_get(name, value)
cfg_set(name, value)
cfg_close()
return value
print config("Beispiel", 123)
------------- (snip here) ----------
Erklärungen dazu:
- Ich möchte mit der Funktion einen benannten Konfigurationsparameter
auslesen.
- Der Parameter soll einen Default-Wert haben (den ich beim Aufruf mit
angebe).
- Der Parameter soll in der Konfiguration angelegt werden, wenn er noch
nicht existiert
- Wenn der angemeldete User keine Screibrechte auf der Konfiguration hat, so
kann es doch gut sein, daß er Leserechte hat.
- Wenn die Konfiguration nicht geöffnet werden kann, will ich den
defaultwert haben.
Das obige Beispiel läßt sich ungefähr so mit den Windows Registy-Funktionen
leicht abbilden. Alle Funktionen liefern einen Fehlercode; schlägt
QueryValue-Funktion (entspricht cfg_get() in obigem Beispiel), ändert sie
den Parameterwert nicht; schlägt SetValue-Fehl, gibt es halt einen
Fehlercode, usw. Obiger Pseudocode ist also nicht völlig realitätsfern.
Bitte, wenn einer an dieser Stelle als Einwurf nur "Das Konzept ist kaputt"
hat, ----> da is der Ausgang.
[Ich habe das tatsächlich mit _winreg gemacht, aber hier im Beispiel
Pseudofunktionen erwähnt, da mir bewusst ist, daß hier eine Reihe von
nicht-Regianern mitliest]
OK, meine Probleme mit dem ganzen:
1) Ich kann schlecht schreiben:
try:
cfg_open()
value = cfg_get(name, value)
cfg_set(name, value)
cfg_close()
except:
# was tun ???
return value
Weil, ich weiß ja nicht, welche der vier Funktionen eine Exception geworfen
hat. Beispielsweise kann es ja sein, daß der cfg-Wert noch nicht existiert
(cfg_get schmeisst eine Exception), und erst mit cfg_set angelegt wird.
2) Gut, ich könnte die Exception auswerten. Ich schreibe also:
try:
...
except exceptions.Exception, e:
behandle(e)
Das schlägt fehl, wenn einer irgendwo
raise "irgendwas"
stehen hat. Sprich, DER AUFRUFENDE CODE MUSS WISSEN, WAS DER AUFGERUFENE
CODE FÜR EXCEPTIONS WERFEN KANN, egal wie tief dieser verschachtelt ist und
was der seinerseits wieder für code anzieht. Ich weiss nicht, sehr nach OOP
klingt das für mich nicht. Für mich ist die Lösung "Fehlercode über alles"
immer noch anziehender.
3) Eine Lösung könnte so aussehen:
try
cfg_open()
except:
return value
try:
try:
value = cfg_get(name, value)
except:
pass
cfg_set(name, value)
finally:
cfg_close()
return value
Ich weiss nicht, ich weiss nicht, da sag noch einer, Exception Handling
würde in einfacherem (und lesbarerem) Code resultieren... Abgesehen davon,
daß ich hier noch gar keine Protokollfunktion eingebaut habe (In meinen
C-Programmen einfach ein wegloggen des HRESULTs, hier müsste ein
kompliziertes Auswerten der Exception stehen, inkl. der bei (2) angemerkten
Einschränkungen.
4) Zusammenfassend: Mich stört
a) daß ich wissen muß, dass UND WELCHE Exceptions eine Funktion wirft
b) daß es nicht einfach ist, einzelne Funktionen "die Fehlschlagen dürfen"
mit Funktionen "die in der Richtigen Reihenfolge aufgerufen werden müssen"
zu mischen, wenn einem potentiell Exception Handling dazwischenfunkt.
_______________________________________________
Python-de maillist - Python-de(a)starship.python.net
http://starship.python.net/mailman/listinfo/python-de
Hi,
hat hier jemand mal solche Stream-Dateien (.asx) fuer den Windose
Media-Player aus dem Web herunterladen und abspeichern koennen?
Ich glaube, ich habe mal etwas von einem Python-Skript fuer das
RTSP-Protokoll gehoert, aber wer weiss schon, was dieser Miniweich-
spueler fuer ein Protokoll faehrt...? Die ASX-Dateien enthalten je-
denfalls Links auf ASF-Dateien mit der Protokollkennung MMS, was
immer das sein mag...
Dinu
--
Dinu C. Gherman
......................................................................
What a wonderful world: http://BowlingForColumbine.com/library/wonderful
_______________________________________________
Python-de maillist - Python-de(a)starship.python.net
http://starship.python.net/mailman/listinfo/python-de
Also, die älteren unter uns werden sich daran erinnern, daß ich bisweilen
ein Schattengefechte mit dem Linux OOM-Killer ausfechtender gewesen bin. Am
Dec 1 17:10:46 war es wieder soweit.
Ich hatte inzwischen eine von mir mit Traces gespickte Version von
linux/mm/oom_kill.c eingespielt gehabt - wer will, kann sich das Archiv mal
runterladen von http://p-nand-q.com/python/zeug.tar.bz2 - enthält
orginal-oom_kill.c, mein-oom_kill.c und 1 x Auszug aus /var/log/messages.
Was soll ich sagen - es scheint wirklich, daß mein schnuckeliger
Python-Prozess den ganzen Speicher frisst. Fragen:
1) Weiss jemand auswendig, in welcher Einheit
struct task_struct *p
...
points = p->mm->total_vm;
verfasst ist? Ich bin grade unter Win beschäftigt und kann deshalb nicht
direkt nachsehen. Ich guck derweil auch ganz beschämt auf den Boden,
ehrlich.
2) Auf jeden Fall ist ein einzelner Python-Prozess "mehr als zwei MySQLs",
was mich schon mal bedenklich stimmt - mysql ist nicht gerade ein
gertenschlankes Abführmittelmodel.
Wie kann man denn - am besten regelmäßig zur Runtime - rausfinden, welches
Python-Objekt wieviel Speicher verbrät? Selberbasteln, Speicherverwaltung
hooken, oder was?
Andererseits - ich kann trotz allem nicht glauben, das über 700 mb
physikalischen Speichers immer noch nicht für ein paar lumpige Skripten
ausreichen sollen. Deshalb
3) Gibt es ein Linux-Cache-Tweak-Howto?
Ciao,
Gerson
_______________________________________________
Python-de maillist - Python-de(a)starship.python.net
http://starship.python.net/mailman/listinfo/python-de