FTP Client

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
gugugs
User
Beiträge: 113
Registriert: Dienstag 30. Dezember 2008, 12:38

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. :D
Leonidas
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
gugugs
User
Beiträge: 113
Registriert: Dienstag 30. Dezember 2008, 12:38

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?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

gugugs hat geschrieben:Hm.. Ok, dachte vielleicht, da es das multiprocessing nun in python 2.6 gibt, wäre das besser zu benutzen.
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: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"? :)
Es ist vor allem mal verständlicher wenn zusammengehörige Dinge in Modulen gruppiert sind und wiederverwendbar sind.
gugugs hat geschrieben:Kann es sein, das ein Speicherzugriffsfehler passieren könnte, wenn die Datei zu groß ist? Oder ist das ausgeschlossen?
Nein. Allerdings sollte die Datei vielleicht nicht gerade 4 GB groß sein, sonst passt sie nicht mehr in den Speicher bei 32-Bit Systemen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

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.
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"?
Ich pack immer die Sachen die für mich inhaltlich zusammengehören in ein Modul.

MFG HerrHagen
Antworten