Eine weitere nette Art und Weise zu Zeit Dingen ist die Verwendung mit Python - Struktur.
with struct ruft automatisch die Methoden __enter__ und __exit__ auf , genau das, was wir brauchen, um die Dinge zeitlich zu steuern .
Lassen Sie uns eine Timer- Klasse erstellen .
from time import time
class Timer():
def __init__(self, message):
self.message = message
def __enter__(self):
self.start = time()
return None # could return anything, to be used like this: with Timer("Message") as value:
def __exit__(self, type, value, traceback):
elapsed_time = (time() - self.start) * 1000
print(self.message.format(elapsed_time))
Dann kann man die Timer-Klasse folgendermaßen verwenden:
with Timer("Elapsed time to compute some prime numbers: {}ms"):
primes = []
for x in range(2, 500):
if not any(x % p == 0 for p in primes):
primes.append(x)
print("Primes: {}".format(primes))
Das Ergebnis ist folgendes:
Primzahlen: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499]
Verstrichene Zeit zur Berechnung einiger Primzahlen: 5.01704216003418ms
time.time()
falsch ist. Das einfachste Beispiel ist, wenn sich die Systemzeit während des Messzeitraums ändert.