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())
ამ გზით, რამდენიმე დავალება შეიძლება შესრულდეს "პარალელურად" ერთ ნაკადში, გადართვით დროის მოლოდინის მიხედვით, მაგრამ არა ერთდროულად მრავალნაკადიანობის მნიშვნელობით.