2016-06-18 6 views
-1

Ich erhalte Daten von einer Streaming-API, die ich in eine Liste einfüge (diese Liste empfängt etwa 8 Stunden am Tag). Nach einer bestimmten Zeit führen Sie dann einige Berechnungen durch und fügen dann die Ergebnisse ein Berechnungen in eine andere Liste, warten Sie dann einen anderen Zeitraum und führen Sie Berechnungen auf dieser Liste durch, um eine dritte Liste zu erstellen. Was ist der beste Weg, dies in Python zu tun? Pseudo-Code:Erstellung einer Python-Zeitliste

FirstList(): 
''' Wait 15 minutes to create first list''' 

SecondList(): 
'''Calculate results from first list and create a second list after given period of time''' 

ThirdList(): 
''' Calculate results from SecondList and create third list after a given period of time''' 
+0

Können Sie uns zeigen, was Sie versucht haben? – user2027202827

+1

Verwenden Sie einfach https://pypi.python.org/pypi/timeout-decorator für Ihre Methoden oder Funktionen – dmitryro

+0

Duplizieren von http://stackoverflow.com/questions/3433559/python-time-delays? –

Antwort

0

können Sie die Timer Klasse von Threading Moduls Python verwenden.

Ihr Programm würde wie folgt aussehen:

from threading import Timer 

def buildLists(): 
    global list1, list2, list3 
    list1 = FirstList() 
    # Calculate other two lists 
    list2 = SecondList() 
    list3 = ThirdList() 

# Run buildLists after 15 minutes (900 seconds) 
listTimer = Timer(900.0, buildLists) 
listTimer.start() 

Die Art und Weise dies funktioniert, ist durch eine Timer-Instanz zu schaffen, die eine Funktion nach Abschluss läuft.

Es war mir nicht klar, was Sie mit '' 'Berechnen der Ergebnisse aus der ersten Liste und erstellen Sie eine zweite Liste nach gegebener Zeit' 'bedeuten, so dass Abschnitt muss möglicherweise auf Ihre besonderen Bedürfnisse angepasst werden , aber die allgemeine Methode sollte für Sie arbeiten.

+0

Danke für die Idee @ rp.beltran, aber wenn ich Ihren Code richtig verstanden habe, wird er nach 15 Minuten Verzögerung mit der Erstellung der ersten Liste beginnen. Ich habe es mir nicht gut erklärt. Lass mich es nochmal versuchen. Ich muss list1 haben die Werte aus dem Datenstrom für 15 Minuten enthalten; list1 muss eine verschachtelte Liste von 15 Minuten Daten enthalten (z. B. list1 [[15minsofdata], [2nd15minsofdata] ...)) und niemals aufhören, diese Liste zu erstellen. Von dort extrahiere ich die erforderlichen Werte aus jeder verschachtelten Liste in Liste1 und füge diese Werte in Liste2 ein und erstelle eine weitere verschachtelte Liste. – namor

+0

Zusammenfassend: Nach 45 Minuten Verzögerung, wenn len (list1) == 3, berechnet x = berechnet aus 3 verschachtelten Listen in list1 dann list2.append (x), wenn len (list2) == 3, r = Berechnungen aus 3 Listen in Liste2 dann list3.append (r). Warten Sie 15 Minuten, berechnen Sie die neuesten 3 Listen in Liste1 und hängen Sie sie an Liste2 an. – namor