我想编写一个可以无限生成事件并以不同方式处理它们的应用程序。准确地说,假设我想每分钟测量一次温度,并根据调整气候控制。我决定使用RxPY,想法是定期从一个线程发送事件,但将它们的处理安排在池中的其他线程上。
为此实现连续无限过程的最佳方法是什么?我目前的想法是有一个好的旧while True:
循环,但由于某种原因,它似乎不适合我。如果可以以不同的方式实施,有人有什么建议吗?
从主要方法我这样做:
if __name__ == '__main__':
store: Store = Store()
scheduler = sched.scheduler(time.time, time.sleep)
while True:
scheduler.enter(5, 1, lambda: store.dispatch(measure_temperature()))
scheduler.run()
一段时间后,以下函数会像这样处理这些事件:
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)
像这样的 main 方法似乎更合适,但是如何使主线程不立即终止?
if __name__ == '__main__':
store: Store = Store()
event_loop_scheduler = scheduler.EventLoopScheduler()
event_loop_scheduler.schedule_periodic(5, lambda arg: store.dispatch(measure_temperature()))