เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Context manager `timer()`

เพื่อนร่วมงานของคุณกำลังพัฒนาเว็บเซอร์วิสที่ประมวลผลภาพจาก Instagram ลูกค้าร้องเรียนว่าระบบใช้เวลานานเกินไปในการตรวจสอบว่าภาพมีแมวอยู่หรือไม่ เพื่อนร่วมงานจึงขอความช่วยเหลือจากคุณ คุณจึงตัดสินใจเขียน context manager สำหรับจับเวลาการทำงานของฟังก์ชันต่าง ๆ

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การเขียนฟังก์ชันใน Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เพิ่ม decorator จากโมดูล contextlib ให้กับฟังก์ชัน timer() เพื่อให้ทำงานเป็น context manager
  • ส่งการควบคุมจากฟังก์ชัน timer() ไปยัง context block

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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)
แก้ไขและรันโค้ด