Sobes.tech
Junior — Middle

Poți executa mai multe sarcini simultan într-un singur thread în Python?

sobes.tech AI

Răspuns de la AI

În Python, într-un singur fir de execuție, se pot realiza mai multe sarcini simultan utilizând programarea asincronă (asyncio) sau generatorii, care permit comutarea între sarcini fără a crea fire noi. Cu toate acestea, din cauza GIL (Global Interpreter Lock) în implementarea standard a CPython, executarea simultană a mai multor fire care rulează cod Python este limitată: doar un singur fir rulează la un moment dat.

Exemplu cu asyncio pentru executarea simultană a sarcinilor într-un singur fir:

import asyncio

async def sarcina(nume, întârziere):
    await asyncio.sleep(întârziere)
    print(f"Sarcina {nume} finalizată")

async def main():
    await asyncio.gather(
        sarcina('A', 1),
        sarcina('B', 2),
        sarcina('C', 1.5)
    )

asyncio.run(main())

Astfel, mai multe sarcini pot fi executate "în paralel" într-un singur fir, alternând în funcție de timpul de așteptare, dar nu simultan în sensul multitasking-ului.