Pig*_*ras 10 python json yaml pyyaml
我使用以下格式解析大约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:
Run Code Online (Sandbox Code Playgroud)
我只想用PyYAML库解析它(我认为在Python中没有其他替代方法:我如何在Python中解析YAML文件).
只是为了测试,我编写代码来解析我的文件:
import yaml
config_file = "/path/to/file.yaml"
stream = open(config_file, "r")
sensors = yaml.load(stream)
Run Code Online (Sandbox Code Playgroud)
使用time命令执行脚本以及我这次得到的脚本:
real 0m3.906s
user 0m3.672s
sys 0m0.100s
Run Code Online (Sandbox Code Playgroud)
那些价值看起来并不太好.我只想用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
Run Code Online (Sandbox Code Playgroud)
但执行时间要好得多:
real 0m0.058s
user 0m0.032s
sys 0m0.008s
Run Code Online (Sandbox Code Playgroud)
为什么PyYAML花费更多时间解析YAML文件而不是解析JSON文件的主要原因是什么?这是PyYAML的问题还是因为YAML格式难以解析?(可能是第一个)
编辑:
我用ruby和YAML添加了另一个例子:
require 'yaml'
sensors = YAML.load_file('/path/to/file.yaml')
Run Code Online (Sandbox Code Playgroud)
执行时间很好!(或者至少没有PyYAML示例那么糟糕):
real 0m0.278s
user 0m0.240s
sys 0m0.032s
Run Code Online (Sandbox Code Playgroud)
chl*_*nde 20
根据文档,您必须使用CLoader/ CSafeLoader(和CDumper):
import yaml
try:
from yaml import CLoader as Loader
except ImportError:
from yaml import Loader
config_file = "test.yaml"
stream = open(config_file, "r")
sensors = yaml.load(stream, Loader=Loader)
Run Code Online (Sandbox Code Playgroud)
这给了我
real 0m0.503s
Run Code Online (Sandbox Code Playgroud)
代替
real 0m2.714s
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2407 次 |
| 最近记录: |