print(sys.getsizeof(2 ** 30))
print(sys.getsizeof(2 ** 60-1))
print(sys.getsizeof(2 ** 60))
print(sys.getsizeof(1100000000))
print(sys.getsizeof([0,1000000000]))
print(sys.getsizeof([]))
print(sys.getsizeof([0,1]))
print(sys.getsizeof([0,1,2]))
print(sys.getsizeof([0,1,2,3]))
print(sys.getsizeof([0,1,2,3,200000]))
28
32
32
36
32
72
56
72
80
88
96
------------------------------------------------------
import time
import sys
time_start = time.time()
g1 = [x for x in range(1130000000)]
time_end = time.time()
print('列表生成式返回结果花费的时间: %s' % (time_end - time_start))
print('列表生成式返回结果占用内存大小:%s' % sys.getsizeof(g1))
0-10亿数字组成的列表对象占用内存7.51G(列表中每个数字约占8byte)
列表生成式返回结果花费的时间: 74.34925079345703
列表生成式返回结果占用内存大小:8058558872
0-11亿数字组成的列表对象占用内存8.44G(列表中每个数字约占8byte)
列表生成式返回结果花费的时间: 88.95576000213623
列表生成式返回结果占用内存大小:9065878776
0-11.1亿数字组成的列表对象占用内存8.44G(开始没变化了)
列表生成式返回结果花费的时间: 88.95576000213623
列表生成式返回结果占用内存大小:9065878776
0-11.3亿数字组成的列表对象 32G内存电脑开始悲催了
:MemoryError
------------------------------------------------------
考虑用生成器
def my_range(start, end):
for x in range(start, end):
yield x
time_start = time.time()
g2 = my_range(0, 1000000000000000000)
time_end = time.time()
print('生成器返回结果花费的时间: %s' % (time_end - time_start))
print('生成器返回结果占用内存大小:%s' % sys.getsizeof(g2))
生成器返回结果花费的时间: 0.0
生成器返回结果占用内存大小:112
------------------------------------------------------
python中list最多可保存多少元素
32位python的限制是 536870912 个元素
64位python的限制是 1152921504606846975 个元素



雷达卡




京公网安备 11010802022788号







