Sobes.tech
Junior — Middle

Python'da bitta ipda bir nechta vazifani bir vaqtning o'zida bajarish mumkinmi?

sobes.tech AI

AIdan javob

Python'da, bitta oqimda, asinxron dasturlash (asyncio) yoki generatorlar yordamida bir nechta vazifalarni bir vaqtning o'zida bajarish mumkin, bu yangi oqimlar yaratmasdan vazifalar orasida o'tishni ta'minlaydi. Biroq, CPython ning standart implementatsiyasida GIL (Global Interpreter Lock) sababli, Python-kod bajaradigan bir nechta oqimlarning bir vaqtning o'zida bajarilishi cheklangan: faqat bitta oqim har doim bajariladi.

Asyncio yordamida bitta oqimda vazifalarni bir vaqtning o'zida bajarish misoli:

import asyncio

async def vazifa(ism, kechikish):
    await asyncio.sleep(kechikish)
    print(f"Vazifa {ism} bajarildi")

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

asyncio.run(main())

Shu tarzda, bir nechta vazifa "parallel" tarzda bitta oqimda bajarilishi mumkin, kutish vaqtiga qarab almashadi, lekin bir vaqtning o'zida ko'p oqimli ishlash (multitasking) ma'nosida emas.