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.