Sobes.tech
Junior — Middle

Ar įmanoma viename Python sraute paleisti kelis įvykių ciklus ir kaip tai įgyvendinti?

sobes.tech AI

Atsakymas iš AI

Python standartinėje bibliotekos asyncio nepalaiko kelių įvykių ciklų (event loops) vienu metu toje pačioje gijoje. Kiekviena gija gali turėti tik vieną aktyvią įvykių ciklą.

Jei reikia dirbti su keliais įvykių ciklais, paprastai kuriami atskiri gijų ar procesų ciklai kiekvienam ciklui. Vienoje gijoje gali būti vykdomas tik vienas įvykių ciklas.

Pavyzdys, kaip pradėti įvykių ciklą atskiroje gijoje:

import asyncio
import threading

def start_loop(loop):
    asyncio.set_event_loop(loop)
    loop.run_forever()

new_loop = asyncio.new_event_loop()
threading.Thread(target=start_loop, args=(new_loop,)).start()

# Dabar galite vykdyti korutinas new_loop iš kitos gijos