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