**Day 25: Python Hằng Ngày - Làm Việc Với Ngày Giờ (Phần 2)**
📺 Video minh họa
Tiếp tục với mô-đun datetime
, hôm nay chúng ta sẽ tìm hiểu cách sử dụng ngày giờ trong các tình huống thực tế như đặt lịch trình, đếm ngược thời gian, và đo thời gian thực thi chương trình.
📌 6. Bộ đếm ngược thời gian (Countdown Timer)
Hiển thị thời gian còn lại theo từng giây mà không tạo dòng mới.
from datetime import datetime, timedelta
import time
import sys
# Đặt thời gian kết thúc (ví dụ: 10 giây sau)
end_time = datetime.now() + timedelta(seconds=10)
while datetime.now() < end_time:
remaining_time = (end_time - datetime.now()).seconds
sys.stdout.write(f"\r⏳ Còn lại: {remaining_time} giây ")
sys.stdout.flush()
time.sleep(1)
print("\n⏰ Hết thời gian!")
📌 7. Tạo lịch trình tự động (Scheduling)
Chạy công việc vào thời điểm nhất định và hiển thị thông báo ngay lập tức.
import schedule
import time
from datetime import datetime
def job():
print(f"🛠 Công việc đang chạy lúc: {datetime.now()}")
# Đặt lịch chạy công việc mỗi 5 giây (để demo nhanh)
schedule.every(5).seconds.do(job)
print("⏳ Đang chờ công việc chạy...")
while True:
schedule.run_pending()
time.sleep(1)
📌 8. Đo thời gian thực thi chương trình
Hiển thị thời gian chạy của đoạn mã một cách rõ ràng.
import timeit
code_to_test = """
sum([i for i in range(1000000)])
"""
execution_time = timeit.timeit(code_to_test, number=10)
print(f"⏱️ Thời gian thực thi: {execution_time:.5f} giây")
📌 9. Đồng hồ bấm giờ (Stopwatch)
Hiển thị thời gian trôi qua theo thời gian thực, cập nhật liên tục mà không in dòng mới.
import time
import sys
print("Bấm Enter để bắt đầu, Ctrl+C để dừng.")
input() # Chờ người dùng nhấn Enter để bắt đầu
start_time = time.time()
try:
while True:
elapsed_time = time.time() - start_time
sys.stdout.write(f"\r⏱️ Thời gian trôi qua: {elapsed_time:.2f} giây ")
sys.stdout.flush()
time.sleep(0.1)
except KeyboardInterrupt:
print("\n🛑 Đã dừng đồng hồ.")
🏆 Bài tập thực hành
🟢 Viết chương trình nhập vào một ngày trong tương lai và tính thời gian còn lại đến ngày đó.
🟢 Lập lịch chạy một công việc mỗi 5 phút và hiển thị ra màn hình.
🟢 Đo thời gian chạy của một đoạn mã Python bất kỳ.
Chạy thử ngay và xem kết quả hiển thị trực tiếp trên màn hình nhé! 🚀