Sobes.tech
Junior — Middle

Vai Python vienā pavedienā var veikt vairākus uzdevumus vienlaikus?

sobes.tech AI

Atbilde no AI

Pythonā vienā pavedienā var vienlaikus veikt vairākus uzdevumus, izmantojot asīnhrono programmēšanu (asyncio) vai ģeneratorus, kas ļauj pārslēgties starp uzdevumiem bez jaunu pavedienu izveides. Tomēr, CPython standarta īstenošanā, GIL (Global Interpreter Lock) dēļ, vienlaicīga Python koda izpilde vairākos pavedienos ir ierobežota — tikai viens pavedienu vienlaikus darbojas.

Piemērs ar asyncio vienā pavedienā veikt vienlaicīgu uzdevumu izpildi:

import asyncio

async def uzdevums(vārds, aizkave):
    await asyncio.sleep(aizkave)
    print(f"Uzdevums {vārds} pabeigts")

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

asyncio.run(galvenais())

Šādā veidā vairākus uzdevumus var veikt "paralēli" vienā pavedienā, pārslēdzoties atkarībā no gaidīšanas laika, bet ne vienlaikus multitaske (multitasking) nozīmē.