Seite 1 von 1

Zeitabstände anzeigen

Verfasst: Donnerstag 2. Oktober 2008, 08:32
von bremer
Die paar Zeilen lassen einen mehrmals die vergangene Zeit anzeigen.

Ich verwende es, um den Rhytmus eines Festplattengeräuschs zu ermitteln.

Code: Alles auswählen

from time import time
moment = time()
input = ""
count = 1
print "Print elapsed time with (enter). Quit program with (q).\n"
while input != "q":
    try:
        input = raw_input()
    except:
        pass
    if input == "":
        print count, "%.2f" %(time() - moment)
        count += 1

Verfasst: Donnerstag 2. Oktober 2008, 08:56
von BlackJack
Alternative:

Code: Alles auswählen

#!/usr/bin/env python
from itertools import count
from time import time


def main():
    start_time = time()
    last_time = start_time
    print 'Print elapsed time with <enter>.  Quit program with <q>.\n'
    for i in count(1):
        user_input = raw_input()
        if user_input == 'q':
            break
        current_time = time()
        print '%4d. %7.2f seconds (diff: %.2f)' % (i,
                                                   current_time - start_time,
                                                   current_time - last_time)
        last_time = current_time


if __name__ == '__main__':
    main()

Re: Zeitabstände anzeigen

Verfasst: Donnerstag 2. Oktober 2008, 10:53
von numerix
@bremer:
Ein paar Anmerkungen zu deinem Programm:
- input ist eine eingebaute Funktion, die sollte man nicht überschreiben
- try/except ist hier überflüssig, ein nicht-spezifiziertes except ist auch nicht gut
- print-Anweisung ist so eleganter:

Code: Alles auswählen

print "%i %2.f" %(counter,time()-moment)
Eine echte Steigerung wäre es natürlich, wenn du die Festplatte dazu bringen könntest, ihr spezielles rhythmisches Geräusch direkt an das Programm zu übermitteln. Damit entfällt dann auch das Problem der menschlichen Reaktionszeit ... :D

Verfasst: Donnerstag 2. Oktober 2008, 14:23
von bremer
Wenn du das entsprechende Modul dazu schreibst. ;-)

verbessert:

Code: Alles auswählen

from time import time
moment = time()
key = ""
count = 1
print "Print elapsed time with (enter). Quit program with (q).\n"
while key != "q":
    key = raw_input()
    if key == "":
        print "%i %.2f" %(count, time() - moment)
        count += 1
Eine Frage habe ich noch. Wie kommt es, dass die Schleife weiterläuft, während noch keine Eingabe stattgefunden hat? Normalerweise müsste er doch abwarten.

Der Code von BlackJack ist auch gut. Immer wieder interessant zu sehen, wie die Fortgeschrittenen solche Probleme lösen.