You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用RxPy时rx.timer与rx.interval执行无输出是什么原因

问题原因

RxPy v3.x版本中,rx.timer、rx.interval这类时间相关的操作符默认运行在异步调度器上,回调执行逻辑都在后台线程。你的代码中没有做任何阻塞主线程的操作,主线程跑完所有同步代码后会直接退出,后台的定时任务还没来得及触发回调就被销毁了,因此看不到预期输出。

解决方案

你可以根据使用场景选择以下任意一种方案:

  • 临时测试场景:直接在代码末尾加足够长的阻塞等待逻辑,让定时任务有执行窗口
import time

# 原有代码放在此处
# ...

# 阻塞10秒,期间所有定时任务会正常触发
time.sleep(10)
  • 生产场景更规范的RxPY原生实现:使用调度器的run()方法阻塞主线程,直到所有任务执行完成或手动终止
import rx
from rx.scheduler import ThreadPoolScheduler

custom_scheduler = ThreadPoolScheduler()
# 订阅时指定调度器
rx.interval(1.0, scheduler=custom_scheduler).subscribe(
    on_next=lambda i: print("tick {}".format(i)),
    on_error=lambda e: print("error: {}".format(e)),
    on_completed=lambda: print("completed")
)
# 阻塞主线程,直到调度器任务全部结束
custom_scheduler.run()
  • 如果不需要无限执行定时任务,可以搭配take等操作符限定发射次数,发射完成后程序会自动退出。

内容的提问来源于stack exchange,提问作者Wiep Nijdam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:15:03