Am 09.03.2017 um 08:53 schrieb Andreas Röhler:
> Soweit ich es verstanden habe, bestünde ein eventueller Nachteil in der
> möglicherweisen hohen Last, die ein wiederholt aufgerufenes Skript
> erzeugen kann
Jedes compilierte Programm , dazu gehört auch der interpeter,
besteht (nach dem Binden) in Linux aus code, Konstanten und Daten.
Beim Ausführen wird code und Konstanten
in einem Speicherbereich geladen, und Platz für Daten bereitgestellt.
Dieser Platz wird erst dann freigegeben, wenn das RAM "voll" ist.
Wenn dass Programm nochmal aufgerufen wird,
befinden sich code und Konstanten bereits im Speicher.
und werden (nach meiner Vermutung) wiederverwendet.
Ebenso die Informationen über den Platz der Daten.
( Kopiere mal 1 TB auf anderen Rechner,
dann kannst Du mit top sehen, wie das RAM vollläuft)
> - als Grund mutmaße ich die vergleichsweise bescheidene Kompilierung.
Vermutlich nur in eine Art pseudocode ( *.pyc dateien.).
C artiger code ist einfach nicht effektiv machbar,
weil man sonst jede Variable jeden möglichen Typ zuordnen müsste.
( Etwas was vielleicht beim C++ template? Mechanismus
den Aufwand in die Höhe treibt. )
Hermann
dessen Kenntnisse allerdings etwas alt sind.
--
http://www.hermann-riemann.de
Am 10.03.2017 um 09:37 schrieb Thomas Güttler:
>> Ich habe zig Jahre lang sowohl beruflich als auch privat
>> ohne Versionskontrolle Programme entwickelt.
> Arbeitest du alleine oder in einem Team?
Beruflich arbeitete ich in einem Team,
privat arbeite ich alleine.
Im Beruf gab es 2 Versionen vom Produkt.
Die aktuelle Wartungsversion, die gültig war,
sobald das Produkt an dem Kunden ausgeliefert war,
und die Entwicklerversion, wo inhaltliche Änderungen
stattfanden.
Daran hat sich 25 Jahre nichts geändert.
Das Produkt war meist in verschiedenen Teilen
unterschiedliche Personen zugeteilt.
Hermann
der am Anfang, als das Produkt zum Kunden kam,
ein Teil davon übernahm und nach 25 Jahren,
als das Produkt nach etlichen Versionen
immer noch beim Kunden war,
es als einziger, programmiermäßig für das Produkt
Verantwortlicher, noch ergänzt hat.
( Einige Monate Ungenauigkeit)
--
http://www.hermann-riemann.de
Am 08.03.2017 um 21:52 schrieb Thomas Güttler:
> ich habe meine Python Einführung überarbeitet:
> http://thomas-guettler.de/vortraege/python/einfuehrung.html
> Ich würde mich über Hinweise und Verbesserungsvorschläge freuen.
Da gibt es bei mir Abweichungen:
*SQL und andere Datenbanken vermeide ich aus einigen Gründen.
Mein *py Dateien sind in Ordner, die ich mit grep -rn durchsuchen kann.
Um zu vermeiden, das *.pyc meine Suche erschwert,
habe ich *.py Programme gebastelt,
die mir derartige Programme in einem anderen Ordner verschieben
und symlinks setzten.
Entsprechend arbeitet meine Datensicherung,
die symlinks in ein Kopierordner wieder ersetzt,
von wo aus ich diesen Kopieordner auf USB-Platten
symlink-frei sichern kann.
Ich habe zig Jahre lang sowohl beruflich als auch privat
ohne Versionskontrolle Programme entwickelt.
Ich mache nur noch Linux ( Wegen Alter windows .. gestrichen)
PCs habe ich viele, hinzu kommt raspberry pi ..
Ein selbst für Pythonentwicklung entwickeltes Programm sieht so aus:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import os, sys, string
filenames=[]
def pyr(filename):
if not os.access(filename,os.F_OK):
print(filename,"existiert nicht")
return
f=open(filename)
l=f.readlines()
f.close()
os.system("cp -p {} {}~".format(filename,filename))
first_blanks=level=0
f=open(filename,"w")
for line in l:
z=line.rstrip()
if len(z)<3 or z[:2]!="#$":
if first_blanks==0:
f.write(z)
elif first_blanks >0:
f.write(first_blanks*' ')
f.write(z)
elif len(z) < first_blanks:
print(-first_blanks,z)
f.write(z)
else:
f.write(z[-first_blanks:])
f.write('\n')
continue
c=z[2]
if c=='<':
level-=1
elif c=='>':
level+=1
elif c==')':
level=0
first_blanks=3*level
f.close()
for arg in sys.argv[1:]:
if arg[0]=='-': pass
filenames.append(arg)
for filename in filenames:
pyr(filename)
Wobei ich nicht sicher bin, ob die Zeile
# -*- coding: utf-8 -*-
noch zweckmäßig ist.
Mit diesem Programm kann ich die Blockeinrückung bequem verändern,
was sonst in diversen Editoren Schwierigkeiten machen kann.
Wenn ich cgi mache, sieht mein Programmanfang zusätzlich so aus:
import cgi, cgitb, codecs, locale
sys.stdout =codecs.open('/dev/stdout', 'w',"utf8") # mode.
sys.stderr =codecs.open('/dev/stderr', 'w',"utf8")
Damit erreiche ich, dass print auch utf-8 Sonderzeichen
im browser korrekt anzeigt.
Bei der Programmentwicklung verwende ich des öfteren folgende Bücher:
Python 3 von Weigend mitp
Python 3 von Ernesti, Kaiser Rheinwerk
Python 3 gepackt von Weigend mitp
Python kurz&gut von Lutz O'REILLY
wobei ich anfangs kurz&gut dauernd, heutzutage kaum noch verwende.
Meine hardware Ausrüstung sieht so aus:
http://www.hermann-riemann.de/pic/Arbeitsplatz.jpg
wobei Enwicklungsrechner und internet Rechner unterschiedlich sind.
Leider beherrscht die Kombination aus aktuellem SuSE, KDE und Ati/AMD
den Umgang mit Fenster im Multimonitorbetrieb nicht mehr,
so dass ich Entwicklungsrechner und internet Rechner nicht mehr
gleichzeitig aktiv lassen kann, ohne dass mir Fenster umgeordnet werden.
Da die Bücher Bibliotheken nur unvollständig behandeln,
und ich beim Entwickeln nicht umschalten mag,
habe ich mir mit
wget -rn https://docs.python.org/3/library/
mal losgeladen.
Es waren ca 730 MB mit vielem, was ich nicht brauche.
Ob es da eine bessere *tar.gz Alternative gibt,
weiß ich nicht.
Hermann
der zum Programmieren meist Python 3 verwendet.
--
http://www.hermann-riemann.de
Am 09.03.2017 um 12:27 schrieb Hans-Peter Jansen:
> On Donnerstag, 9. März 2017 10:41:40 Hermann Riemann wrote:
>> Am 08.03.2017 um 21:52 schrieb Thomas Güttler:
>>> ich habe meine Python Einführung überarbeitet:
>>> http://thomas-guettler.de/vortraege/python/einfuehrung.html
>>>
>>> Ich würde mich über Hinweise und Verbesserungsvorschläge freuen.
>>
>> Da gibt es bei mir Abweichungen:
>>
>> *SQL und andere Datenbanken vermeide ich aus einigen Gründen.
>
> SQLAlchemy macht da _den_ Unterschied (habe früher meine eigenen ORM
> verwendet, was auch schon ganz gut funktionierte..).
Meine Datensätze sind so klein, das ich sie csv ähnlich,
eventuell noch mit weiteren Steuerzeichen im Textdateien schreiben kann,
die ich eventuell auch noch selber einfach verschlüssele.
Das macht auch die Datensicherung und Textänderung
der Daten direkt mit einem Editor einfach.
>> Mein *py Dateien sind in Ordner, die ich mit grep -rn durchsuchen kann.
>> Um zu vermeiden, das *.pyc meine Suche erschwert,
>> habe ich *.py Programme gebastelt,
>> die mir derartige Programme in einem anderen Ordner verschieben
>> und symlinks setzten.
> Klingt kompliziert, und entfällt ja bei Py3.
Python 2 hat die *.pyc im gleichen Ordner angelegt,
Python 3 legt die Ordner in __pycache__ an.
> Schon mal eric ausprobiert?
IDEs mag ich nicht mehr.
Für C etc. habe ich mein gen_makefile.py
und für python meine set_symlinks.py
save_symlins.py Datei.
Die setzt z.B. ein symlink von $HOME/bin/pyr nach mein_ordner/pyr.py.
>> Ich habe zig Jahre lang sowohl beruflich als auch privat
>> ohne Versionskontrolle Programme entwickelt.
> Hmm, git macht da auch wieder einen Unterschied. Die Möglichkeit, verteilt mit
> branches zu arbeiten erleichtert einem das Entwicklerleben schon sehr.
> Stichwort: merge, cherry pick, remote branches (eigene und fremde), problemlos
> an unterschiedlichen Systemen arbeiten (Notebook und Desktop), History...
Bis jetzt war es bei mir kaum unterschiedlich.
Neu ist für mich so etwas wie
home =os.getenv( "HOME")
weil bei raspberry pi und odroid usernamen vorgegeben sind.
Aktiv habe ich bis zu 6 desktops unter SuSE.
Die Sache mit alten eventuell nicht mehr aktuellen Programmen
ist für mich die, das ich bei Änderungen in den sourcen erst
orientieren müsste. Und das würde durch obige Funktionen erschwert.
Nach dem Wechsel von Python 3.4 zu 3.5
sehen bei mir vermutlich die Änderungen in format an.
Mit dem Ordner/Datei System (os.walk) kann ich das automatisieren.
Wenn das allerdings in irgendeinem System eingegraben ist ..
>> Leider beherrscht die Kombination aus aktuellem SuSE, KDE und Ati/AMD
>> den Umgang mit Fenster im Multimonitorbetrieb nicht mehr,
>> so dass ich Entwicklungsrechner und internet Rechner nicht mehr
>> gleichzeitig aktiv lassen kann, ohne dass mir Fenster umgeordnet werden.
> Hrmpf. Beim Umschalten der Monitore, richtig?
Genau. Da meldet Aten, keine Monitorverbindung,
und kwin ordnet die Fenster auf verbliebene Monitore um.
( Früher hatte ich mal 3 Monitore mit jeweils 16 Desktops.)
> kwin Problem.
>> Da die Bücher Bibliotheken nur unvollständig behandeln,
>> und ich beim Entwickeln nicht umschalten mag,
>> habe ich mir mit
>> wget -rn https://docs.python.org/3/library/
>> mal losgeladen.
>>
>> Es waren ca 730 MB mit vielem, was ich nicht brauche.
>>
>> Ob es da eine bessere *tar.gz Alternative gibt,
>> weiß ich nicht.
>
> Probier mal:
>
> $ zypper in python3-doc
>
> und dann in Firefox:
>
> file:///usr/share/doc/packages/python3/html/index.html
Ok funktioniert. Ich habe in meiner browser Startdatei
<a href="/usr/share/doc/packages/python3/html/index.html"
target="_blank">Python</a>
eingefügt
> Pete
> der hin und wieder mal ein Python Paket auf openSUSEs Build Service baut:
> https://build.opensuse.org/project/monitor/home:frispete:python3
Sieht toll aus. ( Seltsam der title Attribute-Wert zum img tag )
Erinnert mich an die Zeit wo ich auch beruflich getestet habe
und die Auswertung der Ergebnisse automatisiert habe.
Hermann
der hin und wieder SuSE neu installiert
und dann jedes mal lange
mit der Auswahl zusätzlicher Pakete beschäftigt ist.
und u.a. python3- einfach all vermisst.
--
http://www.hermann-riemann.de