Inloggen
Inloggen

Hoe gebruik je time.sleep() in Python

Hoe gebruik je time.sleep() in Python
Hostman Team
Technisch schrijver
Programmeertaal Python
14.10.2025
Reading time: 8 min

Soms moet een programma even pauzeren: wachten tot gegevens zijn geladen, de gebruiker tijd geven om iets in te voeren, of de systeembelasting verlagen. Een van de eenvoudigste manieren om dat in Python te doen, is met de functie time.sleep(), die de uitvoering van het programma onderbreekt voor een opgegeven tijdsinterval.

In dit artikel bekijken we hoe time.sleep() werkt in Python, wat de kenmerken en alternatieven zijn, welke fouten vaak voorkomen, en wanneer het beter is om asyncio.sleep() of andere wachtmechanismen te gebruiken — vooral bij multithreaded en asynchrone programma’s.

Wat is de functie sleep() in Python?

De functie sleep() is opgenomen in de standaardbibliotheek van Python om het maken van pauzes in code eenvoudiger te maken. Ze maakt deel uit van de module time en wordt aangeroepen als time.sleep(), waarmee de uitvoering van het programma tijdelijk wordt onderbroken voor een bepaald aantal seconden.

In de praktijk is sleep() handig voor testomgevingen, vertraging tussen API-verzoeken of pauzes tussen berichten. Gebruik ze echter niet voor systeemniveau-taken zoals thread-synchronisatie of nauwkeurige timing: daar bestaan betere tools voor.

Hoe time.sleep() werkt

De functie time.sleep() pauzeert de huidige thread gedurende het opgegeven aantal seconden. In een multithreaded programma blijven andere threads doorgaan, terwijl de thread waarin time.sleep() is aangeroepen “bevroren” blijft gedurende dat interval.

Belangrijk: time.sleep() blokkeert de uitvoering van de code op dat punt en stelt alle volgende bewerkingen uit. Onzorgvuldig gebruik kan leiden tot prestatieverlies of een vastgelopen gebruikersinterface in desktop-toepassingen.

Wanneer time.sleep() gebruiken

time.sleep() wordt het vaakst gebruikt bij testen en debuggen, wanneer een korte vertraging nodig is — bijvoorbeeld om een API-antwoord te controleren of te wachten op een serverreactie. Ze wordt ook gebruikt om scripts stapsgewijs uit te voeren, zodat gebruikers de tijd hebben om informatie te lezen of gegevens in te voeren.

In demo’s, tutorials en prototypes helpt time.sleep() om langdurige processen te simuleren, en bij het werken met externe diensten voorkomt ze blokkering door te frequente verzoeken. Maar dit is niet de enige manier om de uitvoering van code te vertragen — hieronder volgen enkele alternatieven.

time.sleep() gebruiken in Python

Het gebruik van time.sleep() in Python is eenvoudig, zelfs voor beginners. Toch is het belangrijk om de nuances te begrijpen, omdat ze de prestaties of het gedrag van het programma kunnen beïnvloeden.

Basis-syntaxis

Om de functie aan te roepen, importeer eerst de module time:

import time
time.sleep(5)

In dit voorbeeld “slaapt” het programma 5 seconden. De waarde die wordt doorgegeven kan een geheel getal of een kommagetal zijn, zodat ook fracties van seconden mogelijk zijn.

Syntaxis:

time.sleep(seconds)

De functie geeft geen waarde terug — ze pauzeert eenvoudigweg de huidige thread gedurende de opgegeven duur.

Voorbeeld: uitvoering vertragen

Hier is een klein script dat berichten met een tussenpauze van twee seconden afdrukt:

import time
print("First message")
time.sleep(2)
print("Second message")
time.sleep(2)
print("Third message")

Bij het uitvoeren van dit script ziet de gebruiker een pauze van 2 seconden tussen elk bericht. Zo werkt een vertraging in Python met time.sleep(2).

Parameters van time.sleep()

De functie accepteert één parameter, die een integer of een float kan zijn. Dit biedt flexibiliteit bij het implementeren van vertragingen.

Waarden in seconden

De meest gebruikelijke manier is een geheel getal dat het aantal seconden weergeeft:

time.sleep(10)

Het script pauzeert hier 10 seconden — handig voor langere pauzes of om de frequentie van verzoeken te beperken.

Delen van seconden (milliseconden)

Soms is een kortere pauze nodig. Gebruik dan een kommagetal:

time.sleep(0.5)

Dit zorgt voor een pauze van een halve seconde. Door beperkingen van het besturingssysteem en de interne timer van Python kan de daadwerkelijke vertraging iets langer zijn. Voor real-time systemen of toepassingen die nauwkeurige timing vereisen, zijn gespecialiseerde timers beter geschikt.

Alternatieve manieren om te pauzeren in Python

Hoewel time.sleep() de populairste en eenvoudigste methode is, zijn er andere manieren die beter werken wanneer je moet wachten op externe gebeurtenissen of met meerdere threads werkt.

1. Wachten met input()

De eenvoudigste manier om een programma tijdelijk te stoppen is met input(). Deze functie pauzeert de uitvoering totdat de gebruiker op Enter drukt of tekst invoert.

print("Press Enter to continue...")
input()
print("Resuming program execution")

Dit is geen echte tijdvertraging, maar een wacht-op-gebruikersactie. Handig bij debugging of interactieve scripts, maar zelden in geautomatiseerde processen.

2. Wachten met threading.Event()

In multithreaded programma’s kun je synchronisatie-objecten zoals threading.Event() gebruiken, die een thread blokkeren totdat een signaal wordt ontvangen.

import threading
event = threading.Event()

def worker():
    print("Starting work in thread")
    event.wait()
    print("Event received, resuming work")

thread = threading.Thread(target=worker)
thread.start()

import time
time.sleep(3)
event.set()

In dit voorbeeld blijft de thread geblokkeerd tot event.set() wordt aangeroepen. Dit biedt meer controle, want de thread kan op elk moment worden “gewekt”.

3. asyncio.sleep() voor asynchrone programma’s

In asynchrone Python-programma’s (met de module asyncio) wordt asyncio.sleep() gebruikt. In tegenstelling tot time.sleep() blokkeert deze functie niet de hele thread, maar alleen de huidige coroutine, zodat de event-loop andere taken kan blijven uitvoeren.

import asyncio

async def main():
    print("Start async work")
    await asyncio.sleep(2)
    print("2 seconds passed, resuming")

asyncio.run(main())

Dit is vooral nuttig wanneer meerdere asynchrone functies parallel moeten draaien. Als je in dit geval time.sleep() zou gebruiken, zou dat de hele event-loop blokkeren.

Veelvoorkomende problemen met time.sleep()

Hoewel time.sleep() eenvoudig is, kan verkeerd gebruik leiden tot onverwachte blokkades of vertragingen. Begrijpen hoe het de uitvoering beïnvloedt is daarom essentieel.

Het blokkeren van de hoofdthread

De functie blokkeert de thread waarin ze wordt aangeroepen. Als dit de hoofdthread van een GUI-toepassing is (bijvoorbeeld Tkinter of PyQt), kan de interface bevriezen.

💡 Tip:
Gebruik time.sleep() alleen in achtergrondthreads of vervang ze door asyncio.sleep() om blokkades te voorkomen. In grafische applicaties kun je beter timers gebruiken zoals QTimer of after().

Gebruik in multithreaded en asynchrone code

In een multithreaded programma kan time.sleep() afzonderlijk in elke thread worden aangeroepen, maar ze ontgrendelt niet automatisch de Global Interpreter Lock (GIL).
Of andere threads kunnen draaien hangt af van de thread-scheduler van het besturingssysteem.

In asynchrone code moet je voorzichtig zijn: als time.sleep() wordt aangeroepen binnen een event-loop (zoals bij asyncio.run()), blokkeert dit de hele loop.
Gebruik daarom asyncio.sleep(), dat de controle teruggeeft aan de scheduler en andere coroutines laat doorlopen.

Praktisch voorbeeld: een API periodiek aanroepen

Stel dat je een script schrijft dat een externe API regelmatig moet bevragen, maar de regels schrijven voor dat dit hoogstens één keer per 30 seconden mag gebeuren.

Oplossing met time.sleep():

import time
def poll_api():
    print("Making API request...")
def main():
    while True:
        poll_api()
        time.sleep(30)
if __name__ == "__main__":
    main()

Na elk verzoek pauzeert het script 30 seconden, zodat de toegestane frequentie niet wordt overschreden.

Asynchrone variant:

import asyncio
async def poll_api():
    print("Making API request...")
async def main():
    while True:
        await poll_api()
        await asyncio.sleep(30)
if __name__ == "__main__":
    asyncio.run(main())

Deze versie blokkeert het programma niet: andere taken kunnen parallel worden uitgevoerd binnen dezelfde asynchrone omgeving. Het is een flexibeler en schaalbaarder alternatief.

Conclusie

Het organiseren van pauzes en vertragingen is een belangrijk aspect van Python-ontwikkeling. time.sleep() is het eenvoudigste en meest toegankelijke hulpmiddel, maar de keuze tussen time.sleep(), asyncio.sleep() of andere methoden hangt af van de structuur van je project.

Belangrijkste aanbevelingen:

  • Gebruik time.sleep() voor korte pauzes in tests, tussen verzoeken of in demo’s.

  • Blokkeer de hoofdthread van GUI-applicaties niet om een “bevroren” interface te vermijden.

  • In asynchrone code: vervang time.sleep() door asyncio.sleep() om de event-loop efficiënt te houden.

  • In multithreaded programma’s: onthoud dat alleen de huidige thread pauzeert.

  • Gebruik threading.Event() of input() om te wachten op gebeurtenissen of gebruikersinvoer.
Programmeertaal Python
14.10.2025
Reading time: 8 min

Vergelijkbaar

Programmeertaal Python

HTTP-verzoeken begrijpen: structuur, methoden en voorbeelden

HTTP is de sleutel tot communicatie op het internet. Methoden van het HTTP-protocol stellen clients in staat verzoeken naar servers te sturen en servers om antwoorden terug te sturen. Elke website op het World Wide Web gebruikt HTTP-requests. Daarom is het essentieel om ze te begrijpen. Dit artikel behandelt het concept van HTTP-requests, hun structuur, veelgebruikte methoden en voorbeelden uit de praktijk. Dit helpt om te begrijpen hoe het web functioneert. Wat is een HTTP-request? Een HTTP-request is een bericht waarin een client – zoals een webbrowser – de host op de server om een specifieke resource vraagt. Clients gebruiken URL’s in HTTP-requests om aan te geven welke resources ze van de server willen opvragen. Componenten van een HTTP-request Elke HTTP-request bestaat uit drie hoofdcomponenten: Request line Headers Message body Request Line De request line is de eerste regel van een HTTP-request. Deze initialiseert een actie op de server. De request line geeft aan welke HTTP-methode en HTTP-versie de client gebruikt. Naast de methode bevat de request line een URI of URL. Voorbeeld van een request line: GET /index.html HTTP/1.1 Headers De headers volgen direct na de request line. Ze geven extra informatie van de client aan de server. Headers bevatten o.a. informatie over de host, de user agent, taalvoorkeuren en meer. De server gebruikt deze gegevens om de browser en het besturingssysteem van de client te identificeren. HTTP-headers zijn hoofdlettergevoelig, gevolgd door een dubbele punt en een waarde. Voorbeeld van HTTP-request headers: Host: example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Accept: application/json, text/plain, */* Accept-Language: en-US,en;q=0.9 Accept-Encoding: gzip, deflate, br Connection: keep-alive Message Body Het message body-gedeelte wordt gebruikt om data naar de server te sturen. Het is optioneel: niet elke HTTP-request bevat een body. Of een body wordt gebruikt, hangt af van de HTTP-methode. Requests die een body bevatten gebruiken meestal POST, bijvoorbeeld om formulierdata te versturen. De server verwerkt deze data verder. Veelgebruikte HTTP-methoden Een HTTP-request verbindt de client met de server. Redenen hiervoor kunnen zijn: een resource opvragen nieuwe data versturen bestaande data wijzigen data verwijderen Hieronder de belangrijkste en meest gebruikte methoden: 4.1 GET – Resources ophalen De meest gebruikte HTTP-methode is GET, waarmee de server om specifieke data wordt gevraagd. Elke keer dat een gebruiker een webpagina opent, stuurt de browser een GET-request om de benodigde content op te halen. Eigenschappen van GET: cacheable safe idempotent GET kan alleen bestaande data ophalen — het verandert niets aan de server. POST – Data versturen Wanneer een client data naar de server moet sturen (bijv. formulieren, uploads), wordt POST gebruikt. De body bevat de verzonden gegevens. Meerdere POST-requests kunnen meerdere nieuwe resources creëren. PUT – Resources bijwerken PUT lijkt op POST, maar: POST = nieuwe data creëren PUT = bestaande data vervangen De client moet de volledige nieuwe versie van de resource meesturen. PUT is idempotent – dezelfde request meerdere keren uitvoeren levert hetzelfde resultaat op. DELETE – Resources verwijderen DELETE laat de server weten dat een bepaalde resource moet worden verwijderd. Als het verwijderen is gelukt, stuurt de server een bevestiging terug. DELETE is eveneens idempotent. Wat is een HTTP-response? Wanneer de server een antwoord terugstuurt op een HTTP-request, heet dat een HTTP-response. Net als een request bestaat deze uit drie delen: Status line Headers Message body Status Line Deze bevat: HTTP-versie Statuscode Statusbericht Headers Response headers bevatten extra informatie zoals: datum en tijd content-type serverdetails cache-instructies Body De body bevat de daadwerkelijke gegevens die naar de client worden teruggestuurd, zoals: HTML JSON XML afbeeldingen bestanden Statuscodes en hun betekenis HTTP-statuscodes geven aan hoe de server de aanvraag heeft verwerkt. Ze bestaan uit drie cijfers, waarbij het eerste cijfer de categorie bepaalt: Codegroep Beschrijving 1xx Informatief – verwerking gaat door 2xx Succes – verzoek correct verwerkt 3xx Redirect – extra acties vereist 4xx Clientfout – probleem aan clientzijde 5xx Serverfout – probleem aan serverzijde HTTP-headers en hun belang Headers bevatten cruciale informatie voor de communicatie tussen client en server. Ze zijn essentieel voor webfunctionaliteit. Host-identificatie Headers geven aan welk domein door de server wordt gehost. Caching Expires en Cache-Control bepalen hoe lang content wordt opgeslagen. Cookiebeheer Headers zoals Set-Cookie en Cookie houden gebruikerssessies bij. Beveiliging Headers zoals Authorization en Content-Security-Policy beschermen webapplicaties. Response-controle Headers geven aan of een request succesvol was of niet. Praktische voorbeelden van HTTP-requests De voorbeelden hieronder gebruiken Python en de requests-bibliotheek. GET import requests response = requests.get("https://api.example.com/data",                         params={"param1": "value1", "param2": "value2"}) print(response.status_code) print(response.json()) POST import requests url = "https://api.example.com/users" data = {     "username": "newuser",     "email": "newuser@example.com",     "password": "securepassword" } response = requests.post(url, json=data) if response.status_code == 201:     print("User created successfully:", response.json()) else:     print("Error:", response.status_code, response.text) PUT import requests url = "https://api.example.com/users/123" data = {     "username": "updateduser",     "email": "updateduser@example.com" } response = requests.put(url, json=data) if response.status_code == 200:     print("User updated successfully:", response.json()) else:     print("Error:", response.status_code, response.text) DELETE import requests url = "https://api.example.com/users/123" response = requests.delete(url) if response.status_code == 204:     print("User deleted successfully.") else:     print("Error:", response.status_code, response.text) Conclusie HTTP-requests spelen een cruciale rol bij webinteracties. Daarom is het belangrijk om de verschillende methoden te kennen en te begrijpen hoe ze werken. Het kiezen van de juiste methode zorgt voor efficiënte communicatie tussen client en server en verbetert de prestaties van webapplicaties.
10 December 2025 · 6 min to read
Programmeertaal Python

Hoe je de lengte van een lijst in Python bepaalt

Lijsten worden in Python bijna overal gebruikt. In deze tutorial bekijken we vier manieren om de lengte van een Python‑lijst te bepalen: met ingebouwde functies, recursie en een lus. De lengte van een lijst kennen is vaak nodig om erover te itereren en verschillende bewerkingen uit te voeren. Functie len() len() is een ingebouwde Python‑functie om de lengte van een lijst te bepalen. De functie accepteert één argument — de lijst zelf — en retourneert een geheel getal dat gelijk is aan de lengte van de lijst. Dezelfde functie werkt ook met andere iterabele objecten, zoals strings. Country_list = ["The United States of America", "Cyprus", "Netherlands", "Germany"] count = len(Country_list) print("There are", count, "countries") Output: There are 4 countries De lengte van een lijst bepalen met een lus Je kunt de lengte van een lijst in Python bepalen met een for-lus. Het idee is om de hele lijst te doorlopen en bij elke iteratie een teller met 1 te verhogen. Laten we dit in een aparte functie onderbrengen: def list_length(list): counter = 0 for i in list: counter = counter + 1 return counter Country_list = ["The United States of America", "Cyprus", "Netherlands", "Germany", "Japan"] count = list_length(Country_list) print("There are", count, "countries") Output: There are 5 countries De lengte van een lijst bepalen met recursie Dezelfde taak kan worden opgelost met recursie: def list_length_recursive(list): if not list: return 0 return 1 + list_length_recursive(list[1:]) Country_list = ["The United States of America", "Cyprus", "Netherlands","Germany", "Japan", "Poland"] count = list_length_recursive(Country_list) print("There are", count, "countries") Output: There are 6 countries Hoe het werkt. De functie list_length_recursive() ontvangt een lijst als invoer. Als de lijst leeg is, retourneert ze 0 — de lengte van een lege lijst. Anders roept ze zichzelf recursief aan met het argument list[1:], een slice van de originele lijst die begint bij index 1 (dus de lijst zonder het element op index 0). Het resultaat van die aanroep wordt opgeteld bij 1. Bij elke recursieve stap groeit de geretourneerde waarde met één terwijl de lijst met één element krimpt. Functie length_hint() De functie length_hint() bevindt zich in de module operator. Die module bevat functies die overeenkomen met interne Python-operatoren: optellen, aftrekken, vergelijken enzovoort. length_hint() retourneert de lengte van iterabele objecten zoals strings, tuples, dictionaries en lijsten. Ze werkt vergelijkbaar met len(): from operator import length_hint Country_list = ["The United States of America", "Cyprus", "Netherlands","Germany", "Japan", "Poland", "Sweden"] count = length_hint(Country_list) print("There are", count, "countries") Output: There are 7 countries Let op dat length_hint() moet worden geïmporteerd voordat je deze gebruikt. Conclusie In deze gids hebben we vier manieren besproken om de lengte van een lijst in Python te bepalen. Onder gelijke omstandigheden is de meest efficiënte methode len(). De andere benaderingen zijn vooral zinvol wanneer je aangepaste klassen implementeert die lijken op een lijst.
04 December 2025 · 3 min to read
Programmeertaal Python

Command-line opties en argumenten verwerking met argparse in Python

Command-line interfaces (CLI’s) behoren tot de snelste en meest doeltreffende manieren om met software te communiceren. Ze stellen je in staat om opdrachten direct uit te voeren, wat leidt tot snellere uitvoering en uitgebreidere functionaliteit. Ontwikkelaars bouwen vaak CLI’s in Python voor diverse applicaties, tools en automatiseringsscripts, zodat gebruikersinvoer dynamisch kan worden verwerkt. Daarbij komt het Python-module argparse goed van pas. Het argparse-module vereenvoudigt het verwerken van command-line-invoer en stelt ontwikkelaars in staat interactieve en gebruiksvriendelijke tools te bouwen. Als onderdeel van de standaardbibliotheek kunnen programmeurs hiermee invoer definiëren, verwerken en valideren zonder ingewikkelde logica. In dit artikel bespreken we de belangrijkste concepten, nuttige voorbeelden en geavanceerde functies van het argparse-module, zodat je meteen kunt beginnen met het bouwen van betrouwbare command-line tools. Hoe argparse in Python te gebruiken voor CLI’s Stap 1: Module importeren Importeer het module in je Python-script: import argparse Dit maakt het mogelijk om argumenten vanuit de command line te verwerken. Stap 2: Een ArgumentParser-object aanmaken De klasse ArgumentParser is de basis van de argparse-API. Maak een instantie aan: parser = argparse.ArgumentParser(description="A Hostman tutorial on Python argparse.") Hier: description beschrijft wat het programma doet en wordt weergegeven wanneer iemand --help uitvoert. Stap 3: Inputs en opties toevoegen Definieer de parameters die je programma accepteert via add_argument(): parser.add_argument('filename', type=str, help="Name of the file to process") parser.add_argument('--verbose', action='store_true', help="Enable verbose mode") Toelichting: filename is verplicht. --verbose is optioneel en schakelt de verbose-modus in. Stap 4: Gebruikersinvoer verwerken Start de verwerkingsfase met: args = parser.parse_args() De waarden worden opgeslagen als attributen van het args-object. Stap 5: Verwerkte data gebruiken Voorbeeld: print(f"File to process: {args.filename}") if args.verbose:     print("Verbose mode enabled") else:     print("Verbose mode disabled") Voorbeelden van CLI-gebruik Zonder verbose-modus python3 file.py example.txt Met verbose-modus python3 file.py example.txt --verbose Help weergeven python3 file.py --help Veelgebruikte argparse-voorbeelden Voorbeeld 1: Standaardwaarden toevoegen Optionele parameters kunnen een standaardwaarde krijgen. In dit voorbeeld wordt een standaard-timeout van 30 seconden ingesteld: import argparse parser = argparse.ArgumentParser(description="Demonstrating default argument values.") parser.add_argument('--timeout', type=int, default=30, help="Timeout in seconds (default: 30)") args = parser.parse_args() print(f"Timeout value: {args.timeout} seconds") Uitleg argparse importeren Parser initialiseren --timeout toevoegen met type=int en default=30 Waarden parsen met parse_args() Case 1: standaardwaarde python file.py Case 2: aangepaste waarde python file.py --timeout 60 Voorbeeld 2: Gebruik van choices Met choices kun je een argument beperken tot een vooraf vastgestelde set geldige waarden: parser.add_argument('--mode', choices=['basic', 'advanced'], help="Choose the mode of operation") Case 1: geldig python3 file.py --mode basic Case 2: geen invoer python3 file.py Case 3: ongeldig python3 file.py --mode intermediate Voorbeeld 3: Meerdere waarden verwerken Gebruik nargs='+' om meerdere waarden te accepteren: parser.add_argument('--numbers', nargs='+', type=int, help="List of numbers to process") Case 1: meerdere waarden python3 file.py --numbers 10 20 30 Case 2: één waarde python3 file.py --numbers 5 Case 3: geen invoer python3 file.py Case 4: ongeldig python3 file.py --numbers 10 abc 20 Voorbeeld 4: Vereiste optionele argumenten Optionele argumenten (met --) zijn standaard niet verplicht. Met required=True kun je dat wijzigen: parser.add_argument('--config', required=True, help="Path to the configuration file") Case 1: geldig python3 file.py --config settings.json Case 2: ontbreekt python3 file.py Geavanceerde functies van argparse Boolean flags parser.add_argument('--debug', action='store_true', help="Enable debugging mode") Argumentgroepen group = parser.add_argument_group('File Operations') group.add_argument('--input', type=str, help="Input file") group.add_argument('--output', type=str, help="Output file") Mutually exclusive options group = parser.add_mutually_exclusive_group() group.add_argument('--json', action='store_true', help="Output in JSON format") group.add_argument('--xml', action='store_true', help="Output in XML format") Conclusie Het argparse-module maakt het eenvoudig om betrouwbare CLI’s te bouwen voor het verwerken van command-line argumenten in Python. Van eenvoudige parameters tot geavanceerde opties zoals choices en nargs, ontwikkelaars kunnen robuuste en gebruiksvriendelijke tools schrijven. Het gebruik van duidelijke argumentnamen en goede help-teksten verbetert daarbij de leesbaarheid en onderhoudbaarheid van je scripts.
25 November 2025 · 4 min to read

Heb je vragen,
opmerkingen of zorgen?

Onze professionals staan altijd klaar om je te helpen,
of je nu hulp nodig hebt of gewoon niet weet waar te beginnen
E-mail ons
Hostman's Support