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.
Threading und Kommunikation
- 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
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