8.4. Quelques exemples sur l’utilisation des fils (processus légers ou threads)#
from time import sleep
def f1():
for _ in range(5):
print("Bonjour",end=' ')
sleep(0.01)
def f2():
for _ in range(5):
print("tout le monde")
sleep(0.01)
def sequentielle():
f1()
f2()
sequentielle()
Bonjour Bonjour Bonjour Bonjour Bonjour tout le monde
tout le monde
tout le monde
tout le monde
tout le monde
from threading import Thread
def entrelace():
p1 = Thread(target=f1)
p2 = Thread(target=f2)
p1.start()
p2.start()
entrelace()
Bonjour tout le monde
compteur = 0
limite = 400
def calcul():
global compteur
for c in range(limite):
temp = compteur
sleep(0.0000001)
compteur = temp + 1
compteur = 0
calcul()
compteur
400
compteur = 0
limite = 100
mesFils = []
for i in range(4):
p = Thread(target = calcul)
p.start()
mesFils.append(p)
for p in mesFils:
p.join()
compteur
145
from threading import Lock
verrou = Lock()
def calcul():
global compteur
for c in range(limite):
verrou.acquire()
temp = compteur
sleep(0.0000001)
compteur = temp + 1
verrou.release()
compteur = 0
limite = 100
mesFils = []
for i in range(4):
p = Thread(target = calcul)
p.start()
mesFils.append(p)
for p in mesFils:
p.join()
compteur
400