2016-11-23 18 views
1

Ich bin immer noch ein Amateur-Programmierer und versuche nur zu verstehen, wie man dieses Problem angeht. Ich schreibe in Python.Wie mit Zeitverzögerungskonflikten umgehen?

Ich habe Eingaben, die ständig aktualisiert werden (kontinuierlicher Stream). Wie es kommt, führe ich eine for-Schleife für den neuesten Eintrag, der überprüft, ob eine Reihe von Bedingungen erfüllt sind. Wenn dies der Fall ist, muss das Programm 5 Minuten warten, bevor die nächste Aktion für diese Eingabe ausgeführt wird. Aber es muss auch den Rest der Eingaben überprüfen.

So Pseudo-Code:

inputs = continous_stream_of_input 
for input in inputs: 
    if conditions == True: 
     wait 5 minutes 
     do next action 

aber dieser Block muss auf jedes Stück Eingang ausgeführt werden, die in kommt, sobald es in kommt (ohne die Verzögerung von 5 Minuten). Wie soll ich vorgehen?

Antwort

1

, die für einen Timer aus dem Threading-Modul wie der perfekte Ort aussieht:

import threading 

# It can take whatever args you want. 
def do_action(a, b, c): 
    # It can do whatever you want. 

inputs = continuous_stream_of_input 
for input in inputs: 
    if conditions: 
     # 5 minutes is 300 seconds.  args is, again, whatever you want. 
     threading.Timer(300, do_action, args=(a, b, c)).start() 
+0

ausgezeichnet, danke! – user1917407