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.