Laufzeit Problem
Verfasst: Montag 5. Oktober 2009, 14:19
Hi,
mein Programm soll 2 Listen mit einander vergleichen und jene Zeile ausgeben, wo die ID2 in Liste1 größer ist als in Liste2. Die ID1, von und bis sind aber ident.
Liste 1:
ID1 von bis ID2
| 101|01.01.2006|31.12.2006| 5|
| 105|01.01.2008|31.12.2008| 1|
| 107|01.01.2006|16.05.2006| 3|
| 1107|01.01.2006|30.05.2006| 3|
Liste 2:
ID1 von bis ID2
| 101|01.01.2006|31.12.2006| 3|
| 105|01.01.2008|31.12.2008| 1|
| 107|01.01.2006|16.05.2006| 2|
| 1107|01.01.2006|30.06.2006| 3|
Hier mein Code:
Mein Problem ist, dass sie Laufzeit schon bei wenigen Einträgen in der Liste (ca. 100) sehr lange ist.
Das Programm sollte aber Listen mit bis zu 20.000 Einträgen in akzeptabler Zeit verarbeiten können. Kann mir bitte jemand helfen die Laufzeit dieses Programmes zu verbessern.
Dank im Voraus
FROSCH
mein Programm soll 2 Listen mit einander vergleichen und jene Zeile ausgeben, wo die ID2 in Liste1 größer ist als in Liste2. Die ID1, von und bis sind aber ident.
Liste 1:
ID1 von bis ID2
| 101|01.01.2006|31.12.2006| 5|
| 105|01.01.2008|31.12.2008| 1|
| 107|01.01.2006|16.05.2006| 3|
| 1107|01.01.2006|30.05.2006| 3|
Liste 2:
ID1 von bis ID2
| 101|01.01.2006|31.12.2006| 3|
| 105|01.01.2008|31.12.2008| 1|
| 107|01.01.2006|16.05.2006| 2|
| 1107|01.01.2006|30.06.2006| 3|
Hier mein Code:
Code: Alles auswählen
datei1 = str(eing1.get())
in_T5 = open(datei1,'rU')
datei2 = str(eing2.get())
in_ZZT = open(datei2,'rU')
out_f1 = file (str(eing3.get()) , 'w')
listT5 = list()
listZZT = list()
i = 1
for line in in_T5:
text = line
for line in text.split('\n'):
try:
pernr, von, bis, id = (x.strip() for x in line[1:-1].split('|'))
except ValueError:
pass
else:
if pernr and von and bis and id:
listT5.append((pernr, von, bis, id))
for line in in_ZZT:
text = line
for line in text.split('\n'):
try:
pernr, von, bis, id = (x.strip() for x in line[1:-1].split('|'))
except ValueError:
pass
else:
if pernr and von and bis and id:
listZZT.append((pernr, von, bis, id))
while i < len(listZZT):
if listT5[i][0] == listZZT[i][0]:
if listT5[i][3] > listZZT[i][3]:
if listT5[i][1] == listZZT[i][1]:
if listT5[i][2] == listZZT[i][2]:
write.out_f1("%s |" % listT5)
Das Programm sollte aber Listen mit bis zu 20.000 Einträgen in akzeptabler Zeit verarbeiten können. Kann mir bitte jemand helfen die Laufzeit dieses Programmes zu verbessern.
Dank im Voraus
FROSCH