Ich habe vor einen FTP Client zu schreiben. Ich hab noch nicht angefangen, deshalb wird es jetzt noch keine Beispiele geben, denn ich habe nur ein paar fragen zu dem Thema Processen und allem was dazu gehört. Bei einem Client soll es ja so sein, das verschiedene Funktionen ausgeführt werden können, wie "Hochladen", "Herunterladen", "Umbenennen" etc... Aber all die Funktionen sollen ja nebenbei ausgeführt werden, sodass der Client an sich (von mir aus auch ein GUI) weiter läuft. Die Processe sind nicht vom GUI abhängig, da sie ja nichts am GUI verändern sollen (zumindest will ich es so haben). Jetzt ist die Frage mit was mache ich. Bevor sich nun ein paar ärgern, weil dieses Thema schon oft angefragt wurde...^^ Mir ist dieser Beitrag aufgefallen:
http://www.python-forum.de/topic-16809. ... processing
und was sma am Ende schreibt, ist schon wirklich sehr interessant, da das ja nur Prinzipien sind denke ich nicht das sich da in einem Jahr sehr viel verändert hat. Jetzt ist diese ganze Sache ja wirklich sehr kompliziert. Jetzt sind meine folgenden Fragen:
Soll es Multitasking sein?
Soll es threading sein?
Soll es thread sein (denke eher nicht)?
Oder soll es multiprocessing sein? Da hab ich aber dann wieder zwei Interpreter wobei ich nicht weiß, ob das so gut sein soll.
Soll ich meine "Hochladen", "Herunterladen" Funktionen in Module packe, damit die Datei an sich nicht zu groß wird?
Wahrscheinlich wird man alles benutzen können, aber man wird doch denke ich mal schon vorher sagen können, was am besten ist. Wie gesagt, es geht einfach nur um Kommunikation zwischen einem FTP Server und dem Rechner und das eben so, das es das Hauptprogramm nicht blockiert.
P.s.: Hatte es schon mit threading ausprobiert, da bekam ich dann aber sehr sporadisch Speicherzugriffsfehler. Es kann sein, das es daran lag, das es sehr unordentlich geschrieben war. Aber wenn ich genau die gleiche "unordentlich geschriebene" Funktion ohne Threads ausgeführt habe, ging es.
Vielen Dank schon mal, falls dieser Beitrag vollständig gelesen wurde.
FTP Client
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich seh gar nicht was du da für große Probleme hast? Die GUI läuft in einem eigenen Thread, die Verarbeitung in einem anderen. Mehr als zwei Threads bingen dir sowieso nicht viel, da du ja auch nur eine GUI und ein Socket zum Server hast. Außer du magst im FTP-Client irgendwelche recht aufwendigen Berechnungen machen, aber ich wüsste nicht welche.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hm.. Ok, dachte vielleicht, da es das multiprocessing nun in python 2.6 gibt, wäre das besser zu benutzen.
Und wie ist es mit Modulen? Ist es praktischer seine Funktionen in Module zu packen, und diese aufzurufen, oder ist das "so hoch wie breit"?
Kann es sein, das ein Speicherzugriffsfehler passieren könnte, wenn die Datei zu groß ist? Oder ist das ausgeschlossen?
Und wie ist es mit Modulen? Ist es praktischer seine Funktionen in Module zu packen, und diese aufzurufen, oder ist das "so hoch wie breit"?
Kann es sein, das ein Speicherzugriffsfehler passieren könnte, wenn die Datei zu groß ist? Oder ist das ausgeschlossen?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Multiprocessing nutzt man wenn man weiß dass man es braucht. Ich sehe bei dir keinen Sinn, es zu nutzen. Was sollte das denn bringen? Das die GUI nicht einfriert kann man auch so haben.gugugs hat geschrieben:Hm.. Ok, dachte vielleicht, da es das multiprocessing nun in python 2.6 gibt, wäre das besser zu benutzen.
Es ist vor allem mal verständlicher wenn zusammengehörige Dinge in Modulen gruppiert sind und wiederverwendbar sind.gugugs hat geschrieben:Und wie ist es mit Modulen? Ist es praktischer seine Funktionen in Module zu packen, und diese aufzurufen, oder ist das "so hoch wie breit"?
Nein. Allerdings sollte die Datei vielleicht nicht gerade 4 GB groß sein, sonst passt sie nicht mehr in den Speicher bei 32-Bit Systemen.gugugs hat geschrieben:Kann es sein, das ein Speicherzugriffsfehler passieren könnte, wenn die Datei zu groß ist? Oder ist das ausgeschlossen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
multiprocessing bringt dir in dem Fall eigentlich garnichts. Der Flaschenhals ist ja nicht irgendeine komplexe Berechnung (die man auf mehreren Prozesoren verteilen könnte) sondern das Warten auf den Netzwerkverkehr.
MFG HerrHagen
Ich pack immer die Sachen die für mich inhaltlich zusammengehören in ein Modul.Und wie ist es mit Modulen? Ist es praktischer seine Funktionen in Module zu packen, und diese aufzurufen, oder ist das "so hoch wie breit"?
MFG HerrHagen