【发布时间】:2010-06-22 00:33:42
【问题描述】:
我正在通过 dig 处理来自 DNSBL 的数千个域名列表,创建一个包含 URL 和 IP 的 CSV。这是一个非常耗时的过程,可能需要几个小时。我的服务器的 DNSBL 每十五分钟更新一次。有没有办法提高 Python 脚本的吞吐量以跟上服务器的更新?
编辑:按要求编写脚本。
import re
import subprocess as sp
text = open("domainslist", 'r')
text = text.read()
text = re.split("\n+", text)
file = open('final.csv', 'w')
for element in text:
try:
ip = sp.Popen(["dig", "+short", url], stdout = sp.PIPE)
ip = re.split("\n+", ip.stdout.read())
file.write(url + "," + ip[0] + "\n")
except:
pass
【问题讨论】:
-
显示脚本 - 或脚本的伪代码。这样我们就可以提出改进建议。 15 分钟内上千的列表应该很容易在 python 的限制范围内。
-
+1,请告诉我们你有什么。顺便说一句,如果我理解正确,很可能是名称解析,而不是脚本本身,这需要很长时间。如果是这种情况,您可能想尝试线程解决方案。
-
不管实际解决方案如何,几点建议:避免为不同的事物重用相同的变量(text = open...; text = text.read());使用“text.splitlines()”代替正则表达式;避免使用“file”作为变量名,因为它是 Python 2.x 中的关键字(尽管在 Python 3 中不是);并记住关闭你的文件句柄(即使 Python 会为你做这件事,在这种情况下)。
标签: python unix python-multithreading