NOTE : Pour une parallélisation réelle en Python, il faut utiliser la fonction multitraitement pour forker plusieurs processus qui s'exécutent en parallèle (en raison du verrouillage global de l'interpréteur, les threads Python fournissent un entrelacement mais sont en fait exécutés en série, et non en parallèle, et ne sont utiles que pour entrelacer les opérations d'E/S).
Cependant, si vous recherchez simplement l'entrelacement (ou si vous effectuez des opérations d'E/S qui peuvent être parallélisées malgré le verrouillage global de l'interpréteur), alors la fonction filetage est l'endroit où commencer. À titre d'exemple vraiment simple, considérons le problème de la sommation d'une grande plage en additionnant des sous-périodes en parallèle :
import threading
class SummingThread(threading.Thread):
def __init__(self,low,high):
super(SummingThread, self).__init__()
self.low=low
self.high=high
self.total=0
def run(self):
for i in range(self.low,self.high):
self.total+=i
thread1 = SummingThread(0,500000)
thread2 = SummingThread(500000,1000000)
thread1.start() # This actually causes the thread to run
thread2.start()
thread1.join() # This waits until the thread has completed
thread2.join()
# At this point, both threads have completed
result = thread1.total + thread2.total
print result
Notez que l'exemple ci-dessus est très stupide, car il ne fait absolument aucune entrée/sortie et sera exécuté en série bien qu'entrelacé (avec le surcoût du changement de contexte) dans CPython en raison du verrouillage global de l'interpréteur.