gpt4 book ai didi

python - 当数字大于 Python 的 sys.maxint 时,它们是否需要更多内存?

转载 作者:太空宇宙 更新时间:2023-11-03 14:21:06 25 4
gpt4 key购买 nike

我在一个 2.5gb 的文件中迭代超过 80m 行,以创建每行开始位置的偏移量列表。内存按预期缓慢增加,直到我达到 40m 行左右,然后在 3-5 秒内迅速增加 1.5gb,然后由于内存不足导致进程退出。

经过一些调查,我发现爆炸发生在当前偏移量 (curr_offset) 大约为 2b 左右的时间,恰好在我的 sys.maxint (2^31-1) 附近。

我的问题是:

  • 大于 sys.maxint 的数字是否需要更多的内存来存储?如果是这样,为什么?如果不是,为什么我会看到这种行为?
  • 哪些因素(例如哪种 Python、哪种操作系统)决定了 sys.maxint?
    • 在我使用 64 位 Python 的 2010 MacBook Pro 上,sys.maxint 是 2^63-1。
    • 在我使用 64 位 IronPython 的 Windows 7 笔记本电脑上,sys.maxint 是较小的 2^31-1。与 32 位 Python 相同。由于各种原因,我现在无法在我的 Windows 机器上安装 64 位 Python。
  • 有没有更好的方法来创建这个偏移量列表?

有问题的代码:

f = open('some_file', 'rb')
curr_offset = 0
offsets = []
for line in f:
offsets.append(curr_offset)
curr_offset += len(line)
f.close()

最佳答案

大于 sys.maxint 的整数将需要更多内存,因为它们存储为 longs。如果您的 sys.maxint 仅为 2GB,则您使用的是 32 位版本——下载、安装和使用 64 位版本,您将避免该问题。您的代码看起来不错!

关于python - 当数字大于 Python 的 sys.maxint 时,它们是否需要更多内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27762365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com