在2Ghz的英特尔酷睿2双核机器上,在python中传输1GB文件需要多长时间?
fp = open('publisher_feed_8663.xml')
for line in fp:
a = line.split('<')
我想我不够具体。这个过程需要20多分钟,这是异常漫长的。根据经验数据,什么是合理的时间?
答案 0 :(得分:8)
你的回答:
start = time.time()
fp = open('publisher_feed_8663.xml')
for line in fp:
a = line.split('<')
print time.time() - start
您将需要一个名为publisher_feed_8663.xml
,python和2Ghz Intel Core 2 Duo机器的1GB文件。
对于XML的解析,您可能希望使用基于事件的流解析器,例如SAX或lxml。我建议阅读有关iterparse:http://lxml.de/parsing.html#iterparse-and-iterwalk
的lxml文档至于这需要多长时间,你可以使用像hdparm -tT /dev/sda
这样的工具在linux上做琐碎的硬盘基准测试。
更多RAM总是有助于处理大型文件,因为操作系统可以保留更大的磁盘缓存。
答案 1 :(得分:3)
其他人已经谈到了时间,我将谈论处理(XML除外)。
如果你正在做这么大的事情,你当然应该看看发电机。 This pdf基本上会教你所有关于发电机的知识。无论何时消耗或生成大量数据(尤其是串行数据),生成器应该是您最好的朋友。
答案 2 :(得分:1)
这完全取决于文件中的内容。你一次只读一行,这意味着一堆开销会一次又一次地调用迭代器,因为常见的情况是很多短线。使用fp.read(CHUNK)
和CHUNK
的大号来提高效果。
但是,我不确定您使用split('<')
做了什么。由于XML不是基于行的,因此无法使用基本工具或使用一次一行解析来有效地处理XML。如果您在阅读时确实想要对文件中的XML信息集执行某些操作,则应考虑使用SAX解析器。 (再说一次,1GB的XML?那真的是不明智的。)