3、Reading Rasa Source Code —— entry

3、Reeading Rasa Source Code —— entry

在创建各命令的参数设置后,rasa 又对 log 设置、第三方包的 log 设置以及 TensorFlow 的 cpu/gpu 运行环境等做了一些准备工作,这部分的内容比较简单,就不做介绍。

# rasa.__main__.main()
if hasattr(cmdline_arguments, "func"):                # 如果具有 func 属性,则执行 func
  rasa.utils.io.configure_colored_logging(log_level)  # 利用 coloredlogs 配置带颜色的日志输出
  set_log_and_warnings_filters()                      # 设置日志和警告信息过滤器
  rasa.telemetry.initialize_telemetry()               # 初始化遥测(略)
  rasa.telemetry.initialize_error_reporting()         # 初始化遥测的错误报告(略)
  cmdline_arguments.func(cmdline_arguments)           # 进入到各子命令的执行入口中

在此前的 CLI 部分,我们介绍过,各个子命令最终都有一个 set_defaults 方法,该方法的参数便是该命令在执行时具体执行的函数。也就是说正常情况下,cmdline_arguments 都有 func 属性的。接下来两行是采用第三方包 coloredlogs 对日志的颜色做了一些修饰,以及对日志的警告信息进行过滤器设置。再接下来两行是 rasa 执行遥测相关的内容,只是方便 rasa 官方团队收集一些 rasa 用户在使用过程中的一些行为,该部分可整体忽略掉。

最后一句 cmdline_arguments.func(cmdline_arguments),则是进入到指定命令在 set_defaults 方法的参数中执行的函数下。此处我们以 rasa train 命令为例,

此时程序会进入到

# rasa.cli.train.add_subparser()

...
train_parser.set_defaults(func=lambda args: train(args, can_exit=True))                                             
# 运行 rasa train 命令会运行 train() 函数,附带函数参数 can_exit=True
...

从而进入到下面的 train(args: argparse.Namespace, can_exit: bool = False) 中。

对于其他命令的入口函数也是如此,这些函数相当于各个命令的主函数,接下来我们便从这些函数入手开始深度阅读。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值