Python-da tək bir iş parçacığında birdən çox tapşırıq eyni vaxtda yerinə yetirilə bilərmi?
sobes.tech Süni İntellekt
AI-dan cavab
Python-da, tək bir iş parçacığında, asinxron proqramlaşdırma (asyncio) və ya generatorlər istifadə edərək, bir neçə vəzifəni eyni zamanda yerinə yetirmək mümkündür; bu, yeni iş parçacıqları yaratmadan vəzifələr arasında keçid etməyə imkan verir. Ancaq, CPython-un standart tətbiqində GIL (Global Interpreter Lock) səbəbindən, Python kodu icra edən bir neçə iş parçacığının eyni vaxtda yerinə yetirilməsi məhduddur: yalnız bir iş parçacığı hər zaman icra olunur.
Asyncio ilə tək bir iş parçacığında vəzifələrin eyni vaxtda yerinə yetirilməsinə nümunə:
import asyncio
async def vəzifə(ad, gecikmə):
await asyncio.sleep(gecikmə)
print(f"Vəzifə {ad} tamamlandı")
async def main():
await asyncio.gather(
vəzifə('A', 1),
vəzifə('B', 2),
vəzifə('C', 1.5)
)
asyncio.run(main())
Bu şəkildə, bir neçə vəzifə "paralel" şəkildə tək bir iş parçacığında yerinə yetirilə bilər, gözləmə vaxtına əsasən keçid edir, lakin çox iş parçacığı ilə işləmək (multitasking) mənasında deyil.