我有下面的程序,它可以生成1亿台mac并将其添加到列表中。在
但是在python中,1亿台mac的生成和插入需要大约7分钟的时间???在
import datetime
def mac_gen():
hex_byte1=0
hex_byte2=0
hex_byte3=0
hex_byte4=0
hex_byte5=0
hex_byte6=0
hex_byte7=0
hex_byte8=0
hex_byte9=0
hex_byte10=0
hex_byte11=0
hex_byte12=0
total_mac = 0
for hex_byte_12 in range(0,16):
for hex_byte11 in range(0,16):
for hex_byte10 in range(0,16):
for hex_byte9 in range(0,16):
for hex_byte8 in range(0,16):
for hex_byte7 in range(0,16):
for hex_byte6 in range(0,16):
for hex_byte5 in range(0,16):
for hex_byte4 in range(0,16):
for hex_byte3 in range(0,16):
for hex_byte2 in range(0,16):
for hex_byte1 in range(0,16):
total_mac +=1;
if total_mac > number_of_mac_to_print:
return
mac_list.append("%X%X:%X%X:%X%X:%X%X:%X%X:%X%X" %(hex_byte_12,hex_byte11,hex_byte10,hex_byte9,hex_byte8,hex_byte7,hex_byte6,hex_byte5,hex_byte4,hex_byte3,hex_byte2,hex_byte1))
mac_list=list()
number_of_mac_to_print = 100000000
print(datetime.datetime.utcnow())
mac_gen()
print(datetime.datetime.utcnow())
print(len(mac_list))
2018-03-09 07:15:41.650460<;——调用mac峎gen方法前的时间戳
2018-03-09 07:22:33.902744<;——调用macĒgen方法后的时间戳
1亿美元。<;----项目总数。1亿
所以问题是:
如何将python的运行时间从最短的7分钟减少到尽可能少?
如果同一个问题我在C或C plus中解决,请给我一个通用的解决方案?
当在10亿台mac上运行相同的代码时,我相信它会自动终止。而且要花更多的时间。如何实现10亿台mac电脑的生产?
提前谢谢
下面的代码在我的笔记本上花了3:20
你确定要这么做吗?所有
12
位的十六进制数将填满最大的超级计算机(281474976710656
值)。实际上,所有的第一个100000000
地址的前五个数字都是零(如16^7 = 268435456
)。在你真的需要存储所有这些地址吗?如果是,我建议使用单个
range(100000000)
,并将值保留为整数,只在需要时转换为十六进制。这会节省很多空间。在如果不可能,使用一个自己递增的
12
十六进制字符字符串,而不是使用昂贵的格式化操作,这可能更有效。在请不要存储那些
500000000
':'
无用的分隔符。在您所经历的长时间运行很可能是由于内存被调出到硬盘上,以便为向
mac_list
添加新项目腾出空间。在我想不出有什么好理由让你把这些Mac电脑都存储在内存中。它们是连续编号的,因此您可以轻松地动态生成它们:
然后,不要从
^{pr2}$mac_list
获取项目,只需使用此函数。换言之,替换与
相关问题 更多 >
编程相关推荐