Lewati ke konten utama

Fungsi Python time.sleep()

Dalam tutorial ini, Anda akan mempelajari cara kerja fungsi time.sleep() dan cara menerapkannya dalam program Anda.
· 7 mnt Baca

Jelajahi bersama AI

Dalam tutorial ini, Anda akan mempelajari tentang fungsi Python sleep() yang memungkinkan Anda menambahkan jeda dalam eksekusi program. Ini adalah fungsi yang berguna terutama saat program Anda bekerja dengan thread atau bahkan saat Anda bekerja dengan grafik dan animasi. Fungsi sleep tersedia dalam modul time yang berisi banyak fungsi lain terkait akses waktu dan konversi. Meskipun modul ini tersedia di semua platform, tidak semua fungsinya mungkin tersedia atau bekerja dengan cara yang persis sama. Mari kita lihat modul time.sleep() lebih detail...

Modul Time

Modul ini menyediakan fungsi-fungsi yang membantu memanipulasi waktu dan menggunakannya dalam program Anda. Ada modul "saudara" lain yang bekerja lebih presisi dengan tanggal dan kalender pada sistem Anda, tetapi modul ini lebih berfokus pada manipulasi waktu saja — bekerja dengan jam hingga ke milidetik.

Salah satu istilah yang umumnya akan Anda dengar saat bekerja dengan waktu di dunia ilmu komputer adalah epoch.

Tapi pertama-tama, pastikan Anda mengimpor modul time. Untuk melakukannya, cukup ketik:

import time

epoch

Ini adalah titik pasti ketika waktu benar-benar dimulai. Ini bukan berarti kelahiran tata surya kita atau ketika manusia mulai mengukur waktu, melainkan relatif lebih dekat ke masa kini. Untuk sistem UNIX, epoch adalah 1 Januari 1970, 00:00:00 (UTC) (Itu hari Kamis kalau Anda penasaran...) Untuk mengetahui epoch pada sistem Anda, Anda dapat mengetik:

time.gmtime(0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

Ini akan memberi tahu Anda tahun (tm_year), bulan (tm_mon), hari (tm_mday), jam (tm_hour), menit (tm_min), dan detik (tm_sec). Bersama dengan hari dalam minggu (tm_wday) — ini bernilai 3 karena Senin ditandai sebagai awal minggu dan dihitung sebagai 0. Lalu diikuti oleh hari dalam tahun (tm_yday) alias hari julian. Dan terakhir, penanda daylight saving (tm_isdst) — DST adalah daylight saving time. Bidang ini bernilai 0, -1, atau 1. 0 jika daylight saving tidak berlaku. 1 jika daylight saving berlaku, dan -1 jika informasinya tidak tersedia. Mengapa tidak tersedia? Karena aturan DST ditentukan oleh hukum setempat dan dapat berubah.

Kebanyakan komputer menyimpan waktu dan tanggal sebagai selisih detik dari tanggal 1 Januari 1970, 00:00:00 (UTC) ke waktu yang akan disimpan. Jadi, jika Anda mengetik:

time.time()
1548611182.872067

Ini akan memberi tahu Anda jumlah detik yang telah berlalu sejak 1 Januari 1970, 00:00:00 (UTC). Selisih ini disebut timestamp atau waktu epoch UNIX, dan berbentuk angka floating point. Sebenarnya, kalau jujur, selisihnya bukan dalam satuan detik, melainkan sesuatu yang disebut tick. Pada sebagian besar sistem UNIX, jam "berdetik" 50 hingga 100 kali dalam satu detik. Jadi, waktu epoch UNIX sebenarnya adalah jumlah tick yang terjadi sejak 1 Jan 1970, 00:00:00 UTC.

Sekarang, setelah Anda punya gambaran tentang apa yang dilakukan modul time, mari kita lihat fungsi sleep().

time.sleep()

Sederhananya, time.sleep() menerima argumen berupa jumlah detik yang Anda inginkan agar program berhenti atau ditangguhkan sebelum melanjutkan ke langkah berikutnya. Mari kita lihat dengan bantuan program sederhana, di mana kita hanya menampilkan waktu saat ini dengan jeda 5 detik di antara eksekusi berikutnya — sehingga memperkenalkan selisih 5 detik antara setiap cetakan waktu saat ini. Menggunakan time.ctime() membantu menampilkan waktu lokal dalam format yang rapi.

for count in range(5):
    print(time.ctime())
    # Prints the current time with a five second difference
    time.sleep(5)
Sun Jan 27 18:46:24 2019
Sun Jan 27 18:46:29 2019
Sun Jan 27 18:46:34 2019
Sun Jan 27 18:46:39 2019
Sun Jan 27 18:46:44 2019

Sintaks fungsi ini adalah: time.sleep(sec) di mana sec adalah argumen yang menentukan berapa detik program akan ditangguhkan. Fungsi ini tidak mengembalikan nilai apa pun.

sec — Argumen ini sebenarnya adalah angka floating point, sehingga Anda dapat membuat waktu tidur lebih presisi. Namun, ini agak meragukan karena waktu penangguhan yang sebenarnya mungkin lebih pendek daripada waktu yang diminta atau justru lebih lama secara sewenang-wenang. Untuk lebih memahaminya, bayangkan program sebagai masalah atau tugas yang ditangani oleh tenaga penjual berbeda di sebuah toko — ketika Anda menangguhkan program, orang yang mengerjakannya langsung diberi klien lain. Namun tak lama kemudian (lebih cepat dari detik tidur yang ditentukan), tenaga penjual lain yang sedang kosong mengambil alih tugas tersebut dan menyelesaikannya — sehingga waktu penangguhan bisa lebih singkat. Demikian pula, waktu penangguhan bisa lebih lama dari yang diminta secara sewenang-wenang karena penjadwalan tugas untuk semua tenaga penjual di toko, sehingga program harus menunggu giliran. Secara internal tentu ini lebih kompleks, dan banyak cara penanganannya sudah diperkenalkan.

for count in range(3):
    print(time.ctime())
    # Prints the current time with a five second difference
    time.sleep(2.5)
Sun Jan 27 18:46:49 2019
Sun Jan 27 18:46:52 2019
Sun Jan 27 18:46:54 2019

Python tidak memberikan jaminan tentang perilaku pemanggilan fungsi ini, terutama lintas platform. Alasannya adalah sebagian besar fungsi yang didefinisikan dalam modul ini memanggil fungsi pustaka C platform dengan nama yang sama. Akurasinya sangat bergantung pada akurasi sleep sistem operasi yang mendasarinya dan jika Anda perlu menelusuri lebih lanjut — sebaiknya lihat dokumentasi platform karena semantik fungsi-fungsi ini bervariasi antar platform.

Namun ada kabar baik: mulai Python versi 3.5, time.sleep(secs) kini tidur setidaknya selama secs (argumen yang diberikan) meskipun sleep terganggu oleh sinyal (sekali lagi, bayangkan sinyal sebagai tenaga penjual seperti dibahas di atas), kecuali jika penangan sinyal memunculkan pengecualian.

Jadi, apa yang terjadi di dalam saat menggunakan time.sleep()?
Bagian ini dimaksudkan untuk memahami fungsi tersebut dengan lebih baik, tetapi tidak diperlukan untuk mulai menggunakannya. Fungsi ini sebenarnya menggunakan System Clock, sebuah perangkat elektronik di komputer yang menghasilkan sinyal berfrekuensi tinggi yang stabil untuk menyinkronkan semua komponen internal dan merupakan bagian dari prosesor. Modul ini memunculkan apa yang disebut Interrupt Requests (IRQ) pada interval yang dapat diprogram. IRQ bertugas menghentikan kode saat ini yang dieksekusi prosesor, menyimpan keadaan saat ini sebelum menyerahkan kendali ke potongan kode lain di sistem operasi.
Jadi, yang dilakukan fungsi sleep() adalah memanggil rutin penyelesaian I/O yang mendasari atau pemanggilan prosedur asinkron untuk memblokir proses. OS akan mencatat bahwa Anda tidak ingin melakukan apa pun sampai periode batas waktu tercapai. Setelah periode batas waktu ini tercapai, OS akan melanjutkan proses Anda dari keadaan terakhir yang diingatnya. Dan dari sudut pandang Anda, hanya ada pemanggilan sederhana ke fungsi time.sleep().

Selamat telah menguasai fungsi time.sleep(). Pastikan untuk melihat kursus DataCamp Python Data Science Toolbox (Bagian 1) untuk mempelajari lebih lanjut tentang fungsi di Python.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai