Python's time.sleep() onder de knie krijgen: best practices, multithreading en real-world voorbeelden
Python time.sleep()
De time.sleep()-functie pauzeert de huidige thread voor een opgegeven aantal seconden.
Python's time-module biedt een reeks hulpmiddelen voor het werken met tijd. Daaronder is time.sleep() essentieel voor het toevoegen van bewuste vertragingen, het synchroniseren van threads of het drosselen van operaties.
Voorbeeld 1: Basisgebruik
import time
print("Direct geprint.")
time.sleep(2.4)
print("Geprint na 2.4 seconden.")
Voorbeeld 2: Digitale klok
import time
while True:
local = time.localtime()
print(time.strftime("%I:%M:%S %p", local))
time.sleep(1)
De lus print de huidige lokale tijd elke seconde. Om de terminal niet te vervuilen, werkt de verbeterde versie de dezelfde regel bij:
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)
Zie Python-documentatie voor time.sleep() voor diepere inzichten.
Threads begrijpen
Een proces is een uitvoerend programma; threads zijn lichtgewicht eenheden binnen dat proces. Meerdere threads kunnen gelijktijdig draaien, met gedeelde geheugenruimte.
Voorbeeld 3: Eenvoudig multithreading
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()
Omdat t1 en t2 concurrent uitgevoerd worden, kan de output-volgorde elke run variëren.
time.sleep() in multithreaded contexten
In single-threaded programma's halt time.sleep() het hele proces. In een multithreaded omgeving wordt alleen de aanroepende thread gepauzeerd, zodat andere threads doorgaan.
Voorbeeld 4: Threads verschillende pauzes geven
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()
Hier slaapt de ene thread 0,5 s en de andere 0,7 s, wat onafhankelijke pacing illustreert.
Voor meer over threading, zie Python's threading-module.
Python
- Python Datatypes onder de knie krijgen: Een praktische gids
- Python Operators onder de knie krijgen: Een uitgebreide gids
- Python Pass Statement onder de knie krijgen: Een praktische gids
- Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
- Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
- Python-iterators: hoe ze werken en hoe je je eigen maakt
- Python-closures uitgelegd: hoe geneste functies variabelen vangen
- Python datetime beheersen: praktische gids voor datums, tijden en tijdzones
- Huidige datum en tijd ophalen in Python: een praktische gids
- Python: Huidige tijd en tijdzonedata eenvoudig ophalen
- Python's time-module beheersen: functies, structs en praktische voorbeelden