Размер процесса в XP от Python - PullRequest
5 голосов
/ 06 января 2009

У меня есть сценарий Python, который может приблизиться к пределу процесса 2 ГБ в Windows XP. На машине с 2 ГБ физической памяти это может в значительной степени заблокировать машину, даже если сценарий Python работает с приоритетом ниже обычного.

Есть ли в Python способ узнать размер моего собственного процесса?

Спасибо, Gerry

Ответы [ 3 ]

2 голосов
/ 07 января 2009

попробовать:

import win32process
print win32process.GetProcessMemoryInfo(win32process.GetCurrentProcess())
1 голос
/ 20 ноября 2010

Используя psutil https://github.com/giampaolo/psutil:

>>> import psutil, os
>>> p = psutil.Process(os.getpid())
>>> p.memory_info()
meminfo(rss=6971392, vms=47755264)
>>> p.memory_percent()
0.16821255914801228
>>> 
0 голосов
/ 20 ноября 2010

Вместо того, чтобы беспокоиться об ограничении размера вашего процесса во время выполнения, может быть, лучше выяснить, действительно ли все части данных, которые вы сейчас храните в памяти, должны постоянно находиться в памяти.

Возможно, у вас достаточно места на диске, и просто путем создания некоторых временных файлов (см. Модуль tempfile ) должна быть достаточная возможность записать любые данные, которые вы больше не используете для текущего расчета, на диск , Вы можете прочитать его позже, когда / если вам это понадобится снова. Это (упрощенно), сколько баз данных работает.

Хотя диск считается «медленным» в вычислительном смысле, он все еще очень быстрый и является чрезвычайно полезным инструментом при работе с большими наборами данных. И поскольку вы уже устанавливаете приоритет процесса на «Ниже нормального», это не означает, что скорость должна быть серьезной проблемой для вас, в то время как память явно.

...