Hi zusammen.
Ich lese ein (sehr großes) logfile ein und ermittle für die abgearbeiteten Schritte jeweils die Zeit die gebraucht wurde.
Nun ist es aber so das verschidenen Prozesse parallel laufen. Diese haben zur Unterscheidung Prozess ID's.
Diese werden jedoch immer wieder neu vergeben, sodaß sich keine feste Zuordnung machen läßt.
Ich extrahiere also die ID + cmd + start Zeit + Endzeit.
Nun hätte ich gerne folgendes. Erzeuge jeweils eine Liste mit dem Namen der ID. In dieser Liste soll ID + cmd + Ausführdauer des Steps gespeichert werden.
Kommt ein neuer Schritt der die selbe ID hat, soll diese Liste erweitert (append) werden.
Hat er eine andere ID muß entweder eine neue Liste erzeugt oder an eine bestehende angehängt werden.
Ein problem: Es kann sein das pro logfile nur 3 verschiedene ID's auftauchen ... manchmal aber auch über 100 ...
D.h. ich kann nicht im "Vorraus" mal 'n paar leere Listen auf Vorrat definieren ...
Wie könnte ich also eine neue Liste mit einem "Dynamischen" Namen erzeugen ?
Listen mit dynamischen Namen
Hm, vielleicht verstehe ich's auch falsch, aber so hast du doch auch wieder alles zusammen in einer Struktur und mußt alle Einträge durchgehen. Dann kann ich auch eine Große Liste erzeugen und diese danach auf eine spezielle ID prüfen.
Aber wie schon gesagt, bei dieser Methode muß der gesammte Inhalt durchsucht werden.
Deshalb will ich das Ganze ja trennen ...
Aber wie schon gesagt, bei dieser Methode muß der gesammte Inhalt durchsucht werden.
Deshalb will ich das Ganze ja trennen ...
@may24: Du hast es falsch verstanden. Ja es ist eine Struktur, aber die bildet IDs auf Listen ab und man kann mit der ID auf die Liste zugreifen die nur Werte für diese ID enthält. Also genau das was Du willst.
Code: Alles auswählen
id2step = defaultdict(list)
for id_, command, start_time, stop_time in parse_log_file(filename):
id2step[id_].append((id_, command, stop_time - start_time))
@may24: mach Dich einfach mal mit Hilfe eines Anfängertutorials Deiner Wahl mit Dictionaries vertraut. Wenn das geschafft ist, und Du noch Probleme hast, kannst Du ja dann Deinen Code hier posten, dann können wir auch gleich viel konkreter helfen.