Реализация бесконечного l oop для реактивного приложения на основе событий в python - PullRequest
0 голосов
/ 26 мая 2020

Я хочу написать приложение, которое будет бесконечно генерировать события и обрабатывать их по-разному. Точнее, допустим, я хочу измерять температуру каждую минуту и ​​в зависимости от этого настраивать климат-контроль. Я решил использовать RxPY , и идея состоит в том, чтобы периодически отправлять события из одного потока, но планировать их обработку в других потоках из пула.

Каков наилучший способ добиться непрерывного бесконечного процесса для который? Моя текущая идея - иметь старый добрый while True: l oop, но по какой-то причине он мне не подходит. Есть ли у кого-нибудь предложения, если это можно реализовать по-другому?

epic_scheduler = ThreadPoolScheduler(optimal_thread_count)

def a(action):
    for epic in epics:
        epic(rx.of(action)).subscribe(lambda act: do_stuff(act),
                                      scheduler=epic_scheduler)

Что-то вроде этого для основного метода кажется более подходящим, но как мне сделать так, чтобы основной поток не завершался сразу?

if __name__ == '__main__':
    store: Store = Store()
    event_loop_scheduler = scheduler.EventLoopScheduler()
    event_loop_scheduler.schedule_periodic(5, lambda arg: store.dispatch(measure_temperature()))
...