2009-03-31 6 views
1

Ich arbeite an einer kleinen Utility-Anwendung in Python.Wie gestaltet man eine GUI-Netzwerkanwendung mit mehreren Threads?

Die Vernetzung wird Nachrichten senden und empfangen. Die GUI wird die Nachrichten von der GUI anzeigen und Benutzereingaben zum Eingeben von zu sendenden Nachrichten bereitstellen. Es gibt auch einen Speicher Teil, wie ich es nenne, die alle Netzwerknachrichten erhalten und sie in irgendeiner Art von Datenbank speichern wird, um irgendeine Art von Suche später zur Verfügung zu stellen.

Was meine Frage ist, was wäre der beste Weg, dies zu entwerfen? Natürlich müssen sie alle in seperaten Threads passieren, aber was frage ich mich, wie man Informationen zwischen ihnen am besten weitergibt? Welche Art von Signalübergabe/Thread-Locking in Python sollte ich verwenden, um mögliche Probleme zu vermeiden?

+0

Gibt es eine strenge Anforderung, Python zu verwenden, oder sind Sie offen für andere Sprachen? Tcl und Tk können zum Beispiel alle oben genannten Aufgaben problemlos ausführen, ohne dass Threads benötigt werden. Und für mich bedeutet kein Thread weniger Komplexität, was immer eine gute Sache ist. –

+0

Ich benutze eine API-Bibliothek, um mit entfernten Netzwerkdiensten dort zu kommunizieren ... die API wurde ich in Python und C++ implementiert – kender

Antwort

1

Ich denke, dass Sie eine Queue für die Weitergabe von Nachrichten zwischen der GUI und den Netzwerk-Threads verwenden können.

Wie für GUI und Threads im Allgemeinen, finden Sie möglicherweise die PyGTK and Threading Artikel interessant.

2

Eine, wahrscheinlich die beste Lösung für dieses Problem ist die Verwendung Twisted. Es unterstützt alle GUI-Toolkits.

Verwandte Themen