Het grootste probleem met threads is dat ze veel strijd kunnen creëren voor bronnen, zoals CPU-tijd en geheugen. Dit kan tot problemen leiden als twee threads tegelijkertijd toegang proberen te krijgen tot dezelfde bron.ing_simple.py
#!/usr/bin/python import threading import time # Definieer een functie voor de thread def print_time( threadName, delay): count = 0 while count < 5: time.sleep(delay) count += 1 print "%s: %s" % ( threadName, time.ctime(time.time()) ) # Maak als volgt twee threads aan: thread.start_new_thread( print_time, ("Thread-1", 2, ) ) thread.start_new_thread( print_time, ( "Thread-2", 4, ) ) behalve: print "Fout: kan thread niet starten" terwijl 1: pass[/code] Deze code maakt twee threads. De eerste thread voert de functie "print_time" elke 2 seconden uit en de tweede thread voert de functie "print_time" elke 4 seconden uit.
Objecten rijgen
In Python kun je objecten threaden met behulp van de threading-module. Deze module biedt een verscheidenheid aan functies die u kunt gebruiken om threads in uw code te maken en te beheren.
Om een nieuwe thread in Python te starten, kunt u de functie threading.Thread() gebruiken. Deze functie neemt als enige argument een functieobject dat u als een thread wilt uitvoeren. Het functieobject moet een kenmerk __name__ hebben, dat de naam specificeert van de thread waarop deze functie wordt uitgevoerd.
Nadat u een thread hebt gemaakt met de functie Thread() kunt u deze starten door de methode Threading.start() aan te roepen. Deze methode heeft als enige argument een tekenreeks die de naam specificeert van het programmabestand waar de nieuwe thread moet worden uitgevoerd.
U kunt ook de methode Threading.join() gebruiken om een lopende thread te beëindigen en de besturing terug te brengen naar uw hoofdprogrammalus. Deze methode heeft als enige argument een tekenreeks die de naam specificeert van het programmabestand waar de nieuwe thread de uitvoering moet beëindigen.
Daemon-threads
Daemon-threads zijn threads die op de achtergrond van een programma worden uitgevoerd. Ze worden gebruikt om langlopende taken of services af te handelen zonder de normale uitvoeringsstroom te verstoren.