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())

ამ გზით, რამდენიმე დავალება შეიძლება შესრულდეს "პარალელურად" ერთ ნაკადში, გადართვით დროის მოლოდინის მიხედვით, მაგრამ არა ერთდროულად მრავალნაკადიანობის მნიშვნელობით.