我发现我的问题类似的例子,但我不能成功地在我的例子中实现。
我在每行有一个URL域的文件。我想对文件中的每个域执行一个函数。
这是我的代码:
hostname = [line.rstrip() for line in open('domains')]
def checkcert():
with socket.create_connection((hostname, port)) as sock:
with context.wrap_socket(sock, server_hostname = hostname) as ssock:
certificate = ssock.getpeercert()
certExpires = datetime.datetime.strptime(certificate['notAfter'], '%b %d %H:%M:%S %Y %Z')
for line in hostname:
checkcert()
现在主机名变量同时包含所有的域。所以如果我输出这个变量,它会给我完整的文件。
剥离文件的最简单方法是什么,以便我可以检查每个文件的证书?我需要在循环中迭代还是有更简单的方法?
提前谢谢你。
我不知道你的意思是"更好的方法"。如果您希望更快,请尝试使用多处理或多线程并行化代码。例如
with ThreadPoolExecutor(max_workers = 10) as executor:
results = executor.map(checkcert, hostname)
for result in results:
print(result)
你应该会看到一个巨大的性能提升,也许是数量级的。