全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
1271 0
2020-12-09
print(sys.getsizeof(2 ** 30-1))
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 个元素








二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群