Python - sleep()


Python ima modul s imenom time koji pruža nekoliko korisnih funkcija za rješavanje zadataka povezanih s vremenom. Jedna od popularnih funkcija među njima je sleep(). Funkcija sleep() obustavlja izvršavanje trenutne niti na zadani broj sekundi.


Primjer 1: Python sleep()

import time

print("Ispiši odmah.")
time.sleep(2.4)
print("Ispiši nakon 2.4 sekunde.")

Evo kako ovaj program funkcioniše:

  • "Ispiši odmah." - se ispisuje odamah.
  • Obustavlja (odgađa) izvršenje na 2,4 sekunde.
  • "Ispiši nakon 2.4 sekunde." - se ispisuje.

Kao što možete vidjeti iz gornjeg primjera, funkcija sleep() uzima broj s pomičnim zarezom kao argument. Prije Pythona 3.5, stvarno vrijeme obustave može biti manje od argumenta navedenog u funkciji time(). Od Pytho-na 3.5, vrijeme obustave biće najmanje navedene sekunde.


Primjer 2: Python stvara digitalni sat

import time

while True:
  localtime = time.localtime()
  result = time.strftime("%I:%M:%S %p", localtime)
  print(result)
  time.sleep(1)

U navedenom programu izračunali smo i ispisali trenutno lokalno vrijeme unutar beskonačne while petlje. Zatim program čeka 1 sekundu. Ponovo se računa i ispisuje lokalno vrijeme. Ovaj proces traje beskonačno. Pogledajmo sada malo izmijenjenu bolju verzije gornjeg programa.

import time

while True:
  localtime = time.localtime()
  result = time.strftime("%I:%M:%S %p", localtime)
  print(result, end="", flush=True)
  print("\r", end="", flush=True)
  time.sleep(1)


Višestruko nitanje u Python-u

Prije nego što krenemo govorimo o funkciji sleep() u višenitnim programima, razgovarajmo o procesima i nitima. Računarski program je zbirka uputa. Proces je izvršavanje tih uputa. Nit je podskup procesa. Proces može imati jednu ili više niti.


Primjer 3: Python multithreading

import threading 
  
def print_hello_three_times():
  for i in range(3):
    print("Volim učiti Python uz IT TUTORIJALE")
  
def print_hi_three_times(): 
    for i in range(3): 
      print(":)") 

t1 = threading.Thread(target=print_hello_three_times)  
t2 = threading.Thread(target=print_hi_three_times)  

t1.start()
t2.start()

Gornji program ima dvije niti t1 i t2. Ove niti se izvode pomoću izraza t1.start() i t2.start(). Imajte na umu da se t1 i t2 izvode istovremeno i mogli biste dobiti različit ispis.



time.sleep() u višenitnim programima

Funkcija sleep() obustavlja izvršavanje trenutne niti na zadani broj sekundi. U slučaju jednonitnog programa, funkcija sleep() obustavlja izvršavanje niti i procesa. Međutim, funkcija obustavlja nit, a ne cijeli proces u višenitnim programima.


Primjer 4: Funkcija sleep() u višenitnom programu

import threading 
import time
  
def print_hello():
  for i in range(4):
    time.sleep(0.5)
    print("Volim učiti Python uz IT TUTORIJALE!")
  
def print_hi(): 
    for i in range(4): 
      time.sleep(0.7)
      print(":)") 

t1 = threading.Thread(target=print_hello)  
t2 = threading.Thread(target=print_hi)  
t1.start()
t2.start()

Gornji program ima dvije niti. Koristili smo time.sleep(0.5) i time.sleep (0.75) da bismo obustavili izvršavanje ove dvije niti na 0.5 sekundi odnosno 0.7 sekundi.