簡體   English   中英

Python lxml.etree-從字符串或直接從鏈接解析XML是否更有效?

[英]Python lxml.etree - Is it more effective to parse XML from string or directly from link?

使用lxml.etree python框架,直接從鏈接到在線xml文件解析xml效率更高,還是更好的說法是使用其他框架(例如urllib2 )返回字符串,然后從該框架解析? 還是根本沒有區別?

方法1-直接從鏈接解析

from lxml import etree as ET

parsed = ET.parse(url_link)

方法2-從字符串解析

from lxml import etree as ET
import urllib2

xml_string = urllib2.urlopen(url_link).read()
parsed = ET.parse.fromstring(xml_string)

# note: I do not have access to python 
# at the moment, so not sure whether 
# the .fromstring() function is correct

還是有比這兩種方法更有效的方法,例如將xml保存到桌面上的.xml文件,然后從其中解析?

我用一個簡單的計時說唱器運行了這兩種方法。

方法1-直接從鏈接解析XML

from lxml import etree as ET

@timing
def parseXMLFromLink():
    parsed = ET.parse(url_link)
    print parsed.getroot()

for n in range(0,100):
    parseXMLFromLink()

100的平均值= 98.4035毫秒

方法2-從Urllib2返回的字符串中解析XML

from lxml import etree as ET
import urllib2

@timing
def parseXMLFromString():
    xml_string = urllib2.urlopen(url_link).read()
    parsed = ET.fromstring(xml_string)
    print parsed

for n in range(0,100):
    parseXMLFromString()

100的平均值= 286.9630毫秒

因此,奇怪的是,使用lxml直接從鏈接中進行解析是更快捷的方法。 目前尚不清楚從硬盤驅動器下載然后解析大型xml文檔是否會更快,但是大概除非文檔很大且解析任務更加繁瑣, parseXMLFromLink()函數仍會保持更快,因為urllib2似乎可以放慢第二個功能。

我運行了幾次,結果保持不變。

如果用“有效”來表示“有效”,我可以肯定地說,您將看不到兩者之間的任何區別(除非ET.parse(link)得到了可怕的實現)。

原因是網絡時間將成為解析在線XML文件的最重要部分,比將文件存儲到磁盤或將其保存在內存中要長得多,並且比實際解析要長得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM