请问这个循环如何优化,效率上?

2018-12-07 11:29:07 +08:00
 cxa
url = "http://xxx.xxx.net/{}/{}/{}{}{}.jpg"
for a in range(2015, 2019):
    for b in range(1, 13):
        for c in range(1, 100):
            for d in range(ord("a"), ord("z") + 1):
                for e in range(1, 100):
                    new_url = url.format(str(a), str(b), str(c).zfill(2), chr(d), str(d).zfill(2))
                    print(new_url)
1393 次点击
所在节点    问与答
8 条回复
ClutchBear
2018-12-07 12:55:51 +08:00
itertools 库有个专门算这种笛卡尔积的方法
你可以搜索试试
loryyang
2018-12-07 12:57:53 +08:00
你是实时跑吗?用 yield 感觉就可以了。如果一次性的,那慢点就慢点好了
ClutchBear
2018-12-07 12:59:31 +08:00
maichael
2018-12-07 12:59:44 +08:00
优化要结合你实际的需求,循环本身没有什么优化空间。
zhanglintc
2018-12-07 13:35:38 +08:00
@ClutchBear #3 这个库除了代码美观了以外, 在效率上有做什么优化吗?
ClutchBear
2018-12-07 13:38:46 +08:00
@zhanglintc #5 最基本的循环有啥优化的.
爬虫最根本在于网络 io.
kljsandjb
2018-12-07 17:20:38 +08:00
减少数据相关什么的,循环展开等等,具体情况具体分析
bidongliang
2018-12-07 20:50:26 +08:00
单就这个问题来说最内部的 format 有很多重复计算,把对变量 a 的处理放到第一个循环里,b, c, d 等类似,尽量往外提。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/515294

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX