Sobes.tech
Junior — Middle

Pythonда бир потокто бир нече тапшырманы бир убакта аткаруу мүмкүнбү?

sobes.tech AI

AIден жооп

Pythonдо, бир гана агымда, бир нече тапшырмаларды бир убакта аткаруу мүмкүн, асинхрон программалоо (asyncio) же генераторлорду колдонуу менен, алар жаңы агымдарды түзбөстөн тапшырмалардын ортосунда которулушу мүмкүн. Бирок, CPythonдун стандарттык ишке ашырылышында GIL (Global Interpreter Lock) себептүү, Python коду иштетип жаткан бир нече агымдын бир убакта аткарылышы чектелген — бир гана агым ар бир учурда иштейт.

Asyncio менен бир агымда тапшырмаларды бир убакта аткаруу мисалы:

import asyncio

async def тапшырма(аты, кечиктирүү):
    await asyncio.sleep(кечиктирүү)
    print(f"Тапшырма {аты} аяктады")

async def main():
    await asyncio.gather(
        тапшырма('A', 1),
        тапшырма('B', 2),
        тапшырма('C', 1.5)
    )

asyncio.run(main())

Мындайча, бир нече тапшырма "параллел" түрдө бир агымда аткарылат, күтүүнүн убактысына жараша алмашып, бирок бир убакта эмес, көп агымдуу иштөө (multitasking) маанисинде эмес.