我正在用这种格式解析一个大约 6500 行的 YAML 文件:
foo1:
bar1:
blah: { name: "john", age: 123 }
metadata: { whatever1: "whatever", whatever2: "whatever" }
stuff:
thing1:
bluh1: { name: "Doe1", age: 123 }
bluh2: { name: "Doe2", age: 123 }
thing2:
...
thingN:
foo2:
...
fooN:
我只想用PyYAML 库解析它(我认为在 Python 中没有更多的替代品:如何在 Python 中解析 YAML 文件)。
只是为了测试,我编写了该代码来解析我的文件:
import yaml
config_file = "/path/to/file.yaml"
stream = open(config_file, "r")
sensors = yaml.load(stream)
使用命令执行脚本time
以及我这次得到的脚本:
real 0m3.906s
user 0m3.672s
sys 0m0.100s
这个价值观似乎真的不太好。我只想用 JSON 测试相同的内容,只需先将相同的 YAML 文件转换为 JSON:
import json
config_file = "/path/to/file.json"
stream = open(config_file, "r")
sensors = json.load(stream) # We read the yaml config file
但是执行时间要好得多:
real 0m0.058s
user 0m0.032s
sys 0m0.008s
为什么 PyYAML 解析 YAML 文件比解析 JSON 文件花费更多时间的主要原因是什么?是 PyYAML 的问题还是因为 YAML 格式难以解析?(应该是第一个)
编辑:
我添加了另一个使用 ruby 和 YAML 的示例:
require 'yaml'
sensors = YAML.load_file('/path/to/file.yaml')
而且执行时间好!(或者至少没有 PyYAML 示例那么糟糕):
real 0m0.278s
user 0m0.240s
sys 0m0.032s