Wie setze ich am besten etwas wie einen 'Threadpool' um?

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
fon77
User
Beiträge: 17
Registriert: Freitag 10. April 2009, 20:58

Hallo Leute,

ich hoffe, ihr könnt mir helfen.

Ich habe ein Programm geschrieben, dass Binärdateien ins Usenet hochlädt (samt yenc-Kodierung, Header etc, über die nntplib). Funktioniert auch wunderbar soweit. Jetzt würde ich das Programm gerne so erweitern, dass man mehrere Verbindungen zum Server gleichzeitig nutzen kann. Die Anzahl der Verbindungen soll dabei nicht fest vorgegeben sein, sondern der Benutzer soll auswählen können, wieviele Verbindungen zum Server aufgebaut werden sollen (in einem vernünftigen Rahmen natürlich - also vielleicht alles von 1 bis 10 Verbindungen).

Die Daten werden für's Usenet in kleine Häppchen namens 'Article' aufgeteilt (jeweils wenige 100kb gross). Meine Idee wäre also, dass ich eine Anzahl Threads brauche, die jeweils einen Article übergeben bekommen und diesen hochladen. Gleichzeitig brauche ich eine Art Kontrollstruktur, die jeweils die Liste der Threads verwaltet und dafür sorgt, dass sobald ein Thread mit seinem Article fertig ist, er einen neuen Article übergeben bekommt.

Problem ist nur, dass ich im Moment nicht recht weiß, wie genau ich diese Threadverwaltung implementieren kann. Wie kann ich herausfinden, ob ein Thread fertig ist? Oder gibt es möglicherweise einen viel besseren Ansatz für das, was ich machen will?

Hat jemand ein paar gute Stichwörter und Ideen zum Thema, büdde!?

Danke schonmal!

PS: Falls das wichtig ist: Ich habe eine Klasse namens Article geschrieben, die die Rohdaten für den Article und eine Serververbindung übergeben bekommt. Die Klasse sorgt dann dafür, dass aus die Rohdaten mit einem korrekten Header versehen wird, und dann wird das Ganze über die übergebene Verbindung zum Server geschickt.
BlackJack

@fon77: Man könnte die 1 bis 10 Threads starten und denen die Upload-Aufträge per `Queue.Queue` zukommen lassen.
fon77
User
Beiträge: 17
Registriert: Freitag 10. April 2009, 20:58

Danke, das werd ich mir mal anschauen!
Antworten