Menguasai time.sleep() Python: Best Practices, Multithreading, dan Contoh Dunia Nyata
Python time.sleep()
time.sleep() menjeda thread saat ini untuk jumlah detik yang ditentukan.
Modul time Python menawarkan berbagai utilitas untuk bekerja dengan waktu. Di antaranya, time.sleep() sangat penting untuk menambahkan jeda sengaja, menyinkronkan thread, atau membatasi operasi.
Contoh 1: Penggunaan Dasar
import time print("Immediately printed.") time.sleep(2.4) print("Printed after 2.4 seconds.")
Skrip sederhana ini menunjukkan bahwa time.sleep() menerima argumen floating-point. Dalam Python 3.5 dan versi yang lebih baru, fungsi ini menjamin durasi jeda minimal; versi sebelumnya mungkin tidur sedikit lebih lama.
Contoh 2: Jam Digital
import time while True: local = time.localtime() print(time.strftime("%I:%M:%S %p", local)) time.sleep(1)
Loop ini mencetak waktu lokal saat ini setiap detik. Untuk menghindari membingungkan terminal, versi yang ditingkatkan memperbarui baris yang sama:
import time while True: local = time.localtime() print(time.strftime("%I:%M:%S %p", local), end="", flush=True) print("\r", end="", flush=True) time.sleep(1)
Lihat dokumentasi Python untuk time.sleep() untuk wawasan yang lebih dalam.
Memahami Thread
Proses adalah program yang sedang berjalan; thread adalah unit ringan dalam proses tersebut. Beberapa thread dapat berjalan secara bersamaan, berbagi ruang memori yang sama.
Contoh 3: Multithreading Sederhana
import threading def greet_hello(): for _ in range(3): print("Hello") def greet_hi(): for _ in range(3): print("Hi") t1 = threading.Thread(target=greet_hello) t2 = threading.Thread(target=greet_hi) t1.start() t2.start()
Karena t1 dan t2 berjalan secara bersamaan, urutan output dapat bervariasi setiap kali dijalankan.
time.sleep() dalam Konteks Multithreaded
Dalam program single-threaded, time.sleep() menghentikan seluruh proses. Dalam lingkungan multithreaded, hanya thread pemanggil yang dijeda, memungkinkan thread lain melanjutkan.
Contoh 4: Menjeda Thread dengan Berbeda
import threading, time def say_hello(): for _ in range(4): time.sleep(0.5) print("Hello") def say_hi(): for _ in range(4): time.sleep(0.7) print("Hi") t1 = threading.Thread(target=say_hello) t2 = threading.Thread(target=say_hi) t1.start() t2.start()
Di sini, satu thread tidur selama 0,5 detik sementara yang lainnya tidur selama 0,7 detik, mengilustrasikan pacing yang independen.
Untuk lebih lanjut tentang threading, lihat modul threading Python.