你有一个内存错误,因为一个包含 10**8 个整数的 python 列表真的很大。
我用memory_profiler做了一个小测试。range(10**8) 在我的笔记本电脑上占用了将近 3GB 的内存,所以如果你的电脑内存小于 3GB 是正常的。
Line # Mem usage Increment Line Contents
==========================================
2 @profile
3 16.242 MB 0.000 MB def foo():
4 779.199 MB 762.957 MB a=np.arange(10**8)
5 779.207 MB 0.008 MB np.random.shuffle(a)
你说:
我遇到了一个问题,要求使用 timeit 评估长度为 10^8 的随机输入集的运行时间。
我只是想知道您在评估什么,您的算法或 Python 的速度/内存使用情况?为什么长度应该是 10^8?长度可以小一点吗?
顺便说一句,内存使用可以通过使用 numpy 来优化。当您只希望序列是随机的时,random.sample 也应该替换为 random.shuffle,后者在速度和内存使用方面效率更高。
Line # Mem usage Increment Line Contents
================================================
3 @profile
4 16.242 MB 0.000 MB def foo():
5 779.199 MB 762.957 MB a=np.arange(10**8)