【发布时间】:2015-10-28 07:15:31
【问题描述】:
具有 60GB RAM 的 Ubuntu 14.04 上的 Python 2.7.10(通过 conda)。
在 IPython 笔记本中处理大型数据集。即使我阅读了“顶级”信息,仍会出现 MemoryErrors,但仍有许多 GB 可供进程增长。以下是“顶部”的代表性摘录:
KiB Mem: 61836572 total, 61076424 used, 760148 free, 2788 buffers
KiB Swap: 0 total, 0 used, 0 free. 31823408 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
81176 ubuntu 20 0 19.735g 0.017t 3848 R 100.9 30.3 12:48.89 /home/ubuntu/miniconda/envs/ds_notebook/bin/python -m ipykernel -f /run/user/1000/jupyter/kernel-4c9c1a51-da60-457b-b55e-faadf9ae06fd.json
80702 ubuntu 20 0 11.144g 9.295g 8 S 0.0 15.8 1:27.28 /home/ubuntu/miniconda/envs/ds_notebook/bin/python -m ipykernel -f /run/user/1000/jupyter/kernel-1027385c-f5e2-42d9-a5f0-7d837a39bdfe.json
所以这两个进程使用了超过 30GB 的地址空间和大约 26GB 的常驻空间。 (所有其他进程都很小。)
我的理解(以及许多在线资源)暗示,在需要时,程序可以(从缓存中)拉回大约 31GB 的“缓存”总量。 (free -m 的输出在buffers/cache 中也显示 30+GB。)
然而,Python 未能分配仅几 GB 的新结构。
Python“资源”模块报告的所有限制似乎都未设置。
为什么 Python 进程不再占用(或被给予)更多空闲地址空间和物理内存?
【问题讨论】:
-
我遇到了同样的 RAM 问题(或类似问题)
标签: python python-2.7 ubuntu