Aan de slagGa gratis aan de slag

De contextmanager timer()

Een collega van je werkt aan een webservice die Instagram-foto's verwerkt. Klanten klagen dat de service te lang nodig heeft om te bepalen of er wel of niet een kat op een afbeelding staat, dus je collega vraagt jou om hulp. Jij besluit een contextmanager te schrijven die ze kunnen gebruiken om te meten hoelang hun functies erover doen om te draaien.

Deze oefening maakt deel uit van de cursus

Functies schrijven in Python

Cursus bekijken

Oefeninstructies

  • Voeg een decorator uit de module contextlib toe aan de functie timer() zodat die zich gedraagt als een contextmanager.
  • Geef vanuit de functie timer() de controle door aan het contextblok.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Add a decorator that will make timer() a context manager
@contextlib.____
def timer():
  """Time the execution of a context block.

  Yields:
    None
  """
  start = time.time()
  # Send control back to the context block
  ____
  end = time.time()
  print('Elapsed: {:.2f}s'.format(end - start))

with timer():
  print('This should take approximately 0.25 seconds')
  time.sleep(0.25)
Code bewerken en uitvoeren