如何解决Itertools加快美丽汤中的嵌套循环
这是用Python 3编写的代码,它可以工作。但是运行四个嵌套循环以及更多嵌套循环会非常慢。
如何实现itertools来加快循环速度?
对于具有4列数据的25行,大约需要20秒。
import bs4 as bs
import urllib.request
import time
start_time = time.time()
a=[]
b=[]
c=[]
d=[]
for z in range(1,10):
source = urllib.request.urlopen(f'https://X.com/id={z}').read()
soup = bs.BeautifulSoup(source,'html.parser')
for i in range(0,50):
for name in soup.find_all('span',id=f"tblRightHolders:{i}:cellRHSurnameName"):
a.insert(i,name.string)
for city in soup.find_all('span',id=f"tblRightHolders:{i}:cellRHPlace"):
b.insert(i,city.string)
for street in soup.find_all('span',id=f"tblRightHolders:{i}:cellRHStreet"):
c.insert(i,street.string)
for number in soup.find_all('span',id=f"tblRightHolders:{i}:cellRHNumber"):
d.insert(i,number.string)
X = [list(e) for e in zip(a,b,c,d)]
for nested in X:
print(" - ".join(map(str,nested)))
print("--- %s seconds ---" % (time.time() - start_time))
Name/Surname - City - Street - Street number
解决方法
我不认为dd/mm/yyyy
会加快速度-他们只能为可读性更好的代码提供更好的方法。如果您想加快速度,有几种选择:
最后两个最有可能是过度杀伤力。如果可以,请使用joblib进行简单的并行处理(即,具有多个内核)。 Itertools不会帮助您加快速度,它们只会使您的代码更好。
[编辑] 我建议您先对您的代码进行计时。如果您的代码大部分时间都花在下载页面上,则可以只使用joblib,而是使用线程而不是进程。我今天只是用100个单独的线程来执行网页请求,因此做了类似的事情。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。