Okay, also hier ist mein Problem:Kraft Löschen einer Variable in Python
Ich habe eine Funktion, die ich sehr oft anrufen (mehrmals pro Sekunde) und eine variable old_date
, die in der zu berechnenden soll Funktion.
Aber es scheint, dass diese Variable nur einmal berechnet wird, wenn die Funktion zuerst aufgerufen wird, und behält dann den gleichen Wert bei. Hier
ist die Funktion:
def can_push(date):
"""
Check if the last data was pushed more than TIMEFRAME ago
:param date: string, date of the new data
TIMEFRAME = datetime.timedelta(seconds=1)
DB = MongoClient(HOST, PORT).database
DATE_FMT = '%Y-%m-%dT%H:%M:%S.%fZ'
"""
# If collection doesn't exist, we create it and return True
out = False
# Get MongoDB collection
coll = DB.coll
# Date of the new data (got through websocket)
new_date = datetime.strptime(date, DATE_FMT)
# Date of the last data pushed in DB
cursor = coll.find().sort('{date:-1}').limit(1)
old_date = cursor[0]['date']
print old_date # Format is okay, but date is too old
if (new_date - old_date) > TIMEFRAME:
out = True
# gc.collect()
del old_date
return out
Ich versuchte del old_date
aber es scheint nicht zu funktionieren.
Nach dem Lesen this habe ich versucht, gc.collect()
zu verwenden, aber ich bin nicht sehr vertraut mit Python, so dass ich nicht sicher bin, was es wirklich tut (und es scheint auch nicht zu funktionieren).
Wenn ich mit der MongoDB-Shell verbinden, kann ich tatsächlich überprüfen, dass die letzten Daten in der Datenbank viel jünger ist als old_date
zeigt mir.
Hat jemand eine Idee von einer anderen Möglichkeit, old_date
am Ende der Funktion zwangsweise zu löschen?
Python-Version: 2.7.12
Kernel: Ubuntu 16.04
Das old_date kommt aus der Datenbank, wer schreibt es in den Mongo? – geckos
Ich bin in einer anderen Funktion. Wenn 'can_push' True zurückgibt, schiebe ich meine Daten in die Datenbank – Malou
Multithreading? Wenn ja, überprüfe die Synchronisation – geckos