Quelques exemples sur l’utilisation des fils (processus légers ou threads)

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