【发布时间】:2015-02-23 17:55:30
【问题描述】:
好的,我开始:这不是一个经常做的过程,我不在乎一段时间后(但我需要它完成而不需要几天),并且必须在 Python 中。
我需要阅读 200 万个 html 文件 (4kb) 并对其进行检查,只需一次,然后我在 python 中创建了一个更快的程序(我今天学习 python:/)
path = './files/*.htm'
files = glob.glob(path)
writer = open('myfile.txt','a+')
for name in files:
try:
with open(name) as f:
for line in f.readlines():
result = my_logic()
writer.write(result) #Concatenated string
writer.close()
好吧,我想当我用数百万个 htm 运行这个时,所有这些都会爆炸,我的整个办公室都会死掉。 Sooo...有什么小建议吗? 我在 Python 中完全是菜鸟,但我认为我最难用 javascript 创建它:P
编辑:
对不起,我解释了我的问题:P
这是打开文件的最佳方式吗? 我不太了解 Python,并且了解“文件”变量的大小可能很大(不知道是保存的值还是仅供参考),需要读取数百万个文件。
打开 Writer 并在整个程序中保持打开状态?每次写都省,还是程序失败就全输?
很抱歉给您带来不便
【问题讨论】:
-
不,它不会爆炸,您一次处理一个文件,一次处理一行,我不明白这会对系统造成多大的负担。又是什么问题?
-
除了
result没有在任何地方定义,我觉得很好。运行它,看看它是否有效 - 它可能不会爆炸。 -
如果您知道您的代码可以正常工作,并且只想总体改进它,请尝试在Code Review 上提问。
-
我解释了更多我的问题,很抱歉给您带来不便,感谢您的回答:D
-
你应该把你的工作分成更多的进程来利用多核架构。确切的解决方案显然取决于你有什么可用的,但据我所知,这个操作是完全可并行化的。