Sobes.tech
Junior — Middle

Kas Pythonis saab luua uusi vooge asünkroonsetes funktsioonides?

sobes.tech AI

Vastus AI-lt

Jah, Pythonis on võimalik luua uusi niite (threads) asünkroonsete funktsioonide sees. Asünkroonsed funktsioonid (async def) töötavad sündmuste tsüklis (event loop), kuid miski ei takista kasutada standardset threading moodulit niitide loomiseks.

See võib olla kasulik, kui on vaja täita blokeeriv operatsioon paralleelselt asünkroonse koodiga.

Näide:

import asyncio
import threading

async def asünkroonne_funktsioon():
    def niidi_ülesanne():
        print("Täidetakse eraldi niidil")

    niit = threading.Thread(target=niidi_ülesanne)
    niit.start()
    await asyncio.sleep(1)
    niit.join()

asyncio.run(asünkroonne_funktsioon())

Kuid tuleb meeles pidada, et Pythonis on niidid piiratud GIL-iga, ning CPU-intensiivsete ülesannete jaoks on parem kasutada protsesse (multiprocessing). Sisend/väljund operatsioonide jaoks on asünkroonne kood tavaliselt tõhusam.