Python2.6 XML 读取
我想把我的系统从 Active Python 2.4 升级到 Python 2.6.5。不过,我在解析 XML 文件时遇到了一些问题。输入输出的速度非常慢。
这是我的示例 XML 文件:
<config><dicts><dictName>EnvDict</dictName><dictElems><key>AppServerIP</key> <value>localhost</value><key>DBServerIP</key> <value>localhost</value><key>DBServerName</key> <value>DB1</value></dictElems></dicts></config>
我的日志显示,解析这个 XML 文件花了 25 秒。
我的系统结构如下:
Publisher-Subr 用来把请求转发到不同的模块。
ClntMgrFact 连接在 PubSubr 上,监听预定义的端口。它会为客户端的登录请求启动一个新进程。
ClntMgr(进程)是由 ClntMgrFact 启动的,也连接在 PubSubr 上。ClntMgr 会生成一个 ClntWorker(线程)来处理工作流程。
ClntWorker 需要从本地读取一些静态 XML 文件。但是解析速度极其慢。我的 XML 文件大约有 500 到 700k。
有没有人能在不改变系统结构的情况下帮我解决这个问题?提前谢谢!
1 个回答
0
我现在非常困惑…:
$ py26 -mtimeit -s'import rex' 'rex.t()'
10000 loops, best of 3: 103 usec per loop
用100微秒来读取和解析你给的这么小的XML文件,听起来比25秒更合理(即使是在我用来计时的老笔记本上!)——但我该怎么解释我的解析速度比你的快了25万倍呢?!
顺便说一下,这是rex.py
…:
import xml.etree.cElementTree as et
def t(fn='static.xml'):
return et.parse(fn)
而static.xml
就是我写你提供的XML示例的文件(223个字符)。
那么你的平台、操作系统、Python版本、选择的XML解析器等等是什么呢?我用的是一台macbook pro笔记本,操作系统是OSX 10.5.8,2.4 GHz的Intel Core Duo处理器,667 MHz的DDR2内存——正如我所说,这确实是一台相当老的机器!——Python版本是2.6.4,直接从python.org下载的。