Threading und Kommunikation

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
mcdwerner
User
Beiträge: 113
Registriert: Donnerstag 7. Juli 2011, 14:27

Hi,

ich steh grad vor folgendem Problem:
auf einem Server liegen verschiedene größere Datenpakete, diese muss ich einzeln herunterladen um damit Berechnungen durchzuführen, danach kann/muss ich das Datenpaket löschen, da lokal nicht sehr viel Speicherplatz zur Verfügung steht. Der Download dauert relativ lang, da nur wenig Bandbreite zur Verfügung steht => die Berechnung dauert etwa genau so lang wie der Download.

Nacheinander ist das kein Problem und läuft auch schon wunderbar - ist aber zu langsam.

Eine naheliegende Optimierung wäre, nach dem ersten Download, während die erste Berechnung läuft, den zweiten Download zu starten. Dabei gibt es noch folgende Einschränkungen:
Gesicherten Speicherplatz habe ich nur für 2 Downloads, ich kann also den 3. Download erst starten nachdem der 1 gelöscht worden ist, die 2. Berechnung kann ich natürlich erst starten, wenn der 2. Download fertig ist usw... Im Filesystem sehe ich einem Download nicht an, wann er "fertig" ist, da ich die endgültige Größe nicht kenne.

Ich hab mir schon das Threading-Modul und Queues angesehen und hab aber keine Idee, wie ich die Kommunikation zwischen den Threads hinbekomme. Wie bekomme ich die Signale "starte Download" bzw. "starte Berechnung" geregelt? Bin für alle Hinweise dankbar.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

du könntest dir mal das `concurrent.futures`. Dessen API ermöglicht abzufragen, ob ein Thread oder Prozess noch läuft bzw. du kannst auch ein Callback-Funktion aufrufen, wenn ein Prozess / Thread fertig ist.

Gruß, noisefloor
mcdwerner
User
Beiträge: 113
Registriert: Donnerstag 7. Juli 2011, 14:27

..Danke, das Modul kannte ich noch nicht :-)
Antworten