Python:列出IP范围
我在使用 netaddr 这个包,版本是 0.7.5,遇到了一些问题。下面这段代码可以正常运行,并且能打印出指定范围内的 IP 地址:
from netaddr import IPNetwork
ipnetwork = '192.168.0.0/24'
print list(IPNetwork(ipnetwork).iter_hosts())
但是,如果我把网络改成 '192.168.0.0/8',我的脚本就卡住了:
from netaddr import IPNetwork
ipnetwork = '192.168.0.0/8'
print list(IPNetwork(ipnetwork).iter_hosts())
我是不是漏掉了什么,还是说这是个 bug 呢?
补充说明
看起来我之前没有意识到这个范围有多大,所以才出现了问题!
1 个回答
2
你确定这不是在花很多时间吗?你正在从迭代器中生成一个列表。当我在我的电脑上运行这个时,CPU使用率达到了100%,而且内存使用量也在增加。如果我直接使用迭代器,我也可以打印出整个范围。