Zeitabstände anzeigen

Code-Stücke können hier veröffentlicht werden.
bremer
User
Beiträge: 109
Registriert: Sonntag 25. Mai 2008, 00:13

Zeitabstände anzeigen

Beitragvon bremer » Donnerstag 2. Oktober 2008, 08:32

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
BlackJack

Beitragvon BlackJack » Donnerstag 2. Oktober 2008, 08:56

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()
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Re: Zeitabstände anzeigen

Beitragvon numerix » Donnerstag 2. Oktober 2008, 10:53

@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
bremer
User
Beiträge: 109
Registriert: Sonntag 25. Mai 2008, 00:13

Beitragvon bremer » Donnerstag 2. Oktober 2008, 14:23

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.

Wer ist online?

Mitglieder in diesem Forum: pillmuncher