tobiii
Aktives Mitglied
Thread Starter
- Dabei seit
- 20.05.2006
- Beiträge
- 1.226
- Reaktionspunkte
- 40
Hallo Leute!
Ist zwar eine Python Frage, dachte aber ihr seid bestimmt liberal genug auch diesen kleine Thread hier zu akzeptieren
Ich baue gerade ein kleines Programm, das von der Yahoo finance api Wechselkurse in bestimmten Abstanden abruft und diese dann nach x Abrufen irgendwann weiter verarbeitet. Dazu habe ich eine Klasse currencyStream definiert, welche jeweils die zeitliche Entwicklung eines Wechselkurses (z.B. USD zu EUR) abbildet.
Diese Klasse besitzt eine Methode, die es der jeweiligen Instanz erlaubt, den aktuellen Wechselkurs zu erfragen und diese Information dann entsprechend zu speichern. Der Aufruf dieser Methode dauert jeweils ca. 1-2 Sekunden, diese Dauer wird massgeblich von der Reaktionszeit des yahoo-Servers bestimmt.
Das Programm verwaltet mehrere dieser Wechselkurse, z.b. im Beispiel weiter unten 3 Stück. Aktuell werden die Instanzen in einem Dictionary verwaltet.
Wenn ich jetzt mit dem Code weiter unten diese 3 Instanzen nacheinander update, dann benötigt der Vorgang 6 Sekunden, wobei zu 99% oder mehr nur auf die yahoo Antwort gewartet wird.
Codebeispiel:
An dieser Stelle werden die 3 Instanzen initialisiert, sd ist das Dictionary das alle Instanzen verwaltet.
Im Modul cy gibt es nun eine Funktion, die alle Instanzen die in einem Dictionary zusammengefasst sind updatet:
Wenn ich auf diese Weise mehr als z.B 10 verschiedene Wechselkurse in einem Intervall von 10 Sekunden abfragen möchte, dann kommt das Programm mit dem updaten nicht mehr hinterher.
Welche Möglichkeiten seht ihr, die Methode addCurrentRate() für die einzelnen Instanzen, die in dem Dictionary verwaltet werden, parallel aufzurufen, d.h. die Dauer des Aktualisierungsvorgangs in etwa auf nahezu den einfachen Aufruf zu reduzieren?
Viele Grüße und vielen Dank für eure Ratschläge im Voraus!!!!
Einen schönen Abend,
Tobi
Ist zwar eine Python Frage, dachte aber ihr seid bestimmt liberal genug auch diesen kleine Thread hier zu akzeptieren
Ich baue gerade ein kleines Programm, das von der Yahoo finance api Wechselkurse in bestimmten Abstanden abruft und diese dann nach x Abrufen irgendwann weiter verarbeitet. Dazu habe ich eine Klasse currencyStream definiert, welche jeweils die zeitliche Entwicklung eines Wechselkurses (z.B. USD zu EUR) abbildet.
Diese Klasse besitzt eine Methode, die es der jeweiligen Instanz erlaubt, den aktuellen Wechselkurs zu erfragen und diese Information dann entsprechend zu speichern. Der Aufruf dieser Methode dauert jeweils ca. 1-2 Sekunden, diese Dauer wird massgeblich von der Reaktionszeit des yahoo-Servers bestimmt.
Das Programm verwaltet mehrere dieser Wechselkurse, z.b. im Beispiel weiter unten 3 Stück. Aktuell werden die Instanzen in einem Dictionary verwaltet.
Wenn ich jetzt mit dem Code weiter unten diese 3 Instanzen nacheinander update, dann benötigt der Vorgang 6 Sekunden, wobei zu 99% oder mehr nur auf die yahoo Antwort gewartet wird.
Codebeispiel:
Code:
sd={"MYREUR":cy.CurrencyStream('MYR','EUR'), "USDEUR":cy.CurrencyStream('USD','EUR'),"SGDEUR":cy.CurrencyStream('SGD','EUR')}
An dieser Stelle werden die 3 Instanzen initialisiert, sd ist das Dictionary das alle Instanzen verwaltet.
Im Modul cy gibt es nun eine Funktion, die alle Instanzen die in einem Dictionary zusammengefasst sind updatet:
Code:
def runUpdateCycle(streamdict):
for x in streamdict.values():
x.addCurrentRate()
Wenn ich auf diese Weise mehr als z.B 10 verschiedene Wechselkurse in einem Intervall von 10 Sekunden abfragen möchte, dann kommt das Programm mit dem updaten nicht mehr hinterher.
Welche Möglichkeiten seht ihr, die Methode addCurrentRate() für die einzelnen Instanzen, die in dem Dictionary verwaltet werden, parallel aufzurufen, d.h. die Dauer des Aktualisierungsvorgangs in etwa auf nahezu den einfachen Aufruf zu reduzieren?
Viele Grüße und vielen Dank für eure Ratschläge im Voraus!!!!
Einen schönen Abend,
Tobi
Zuletzt bearbeitet: