Sobes.tech
Junior — Middle

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.