相关疑难解决方法(0)

什么是Linux内存管理中的RSS和VSZ

Linux内存管理中的RSS和VSZ是什么?在多线程环境中,如何管理和跟踪这两者?

linux

299
推荐指数
7
解决办法
26万
查看次数

如何在Python中分析内存使用情况?

我最近对算法感兴趣,并开始通过编写一个简单的实现,然后以各种方式优化它来探索它们.

我已经熟悉用于分析运行时的标准Python模块(对于大多数事情我已经发现IPython中的timeit魔术功能已足够),但我也对内存使用感兴趣,所以我也可以探索这些权衡(例如,缓存先前计算的值表的成本与根据需要重新计算它们的成本.是否有一个模块可以为我分析给定函数的内存使用情况?

python memory profiling

198
推荐指数
7
解决办法
21万
查看次数

Python中可用和使用的系统内存?

可能重复:
如何在Python中获取当前的CPU和RAM使用情况?

如何从Python获取可用和当前使用的内存?它需要是跨平台的,至少可以在Windows,Mac OS X和Linux上运行.

我想在我的应用程序中向用户报告他没有足够的内存可以继续进行下一步操作.

python operating-system cross-platform

51
推荐指数
2
解决办法
5万
查看次数

通过Python函数跟踪*最大*内存使用情况

我想知道在调用函数期间分配的最大RAM量是多少(在Python中).关于跟踪RAM使用的SO还有其他问题:

建议使用哪种Python内存分析器?

如何在Python中分析内存使用情况?

但是那些似乎允许你在heap()调用方法(在guppy的情况下)时更多地跟踪内存使用情况.但是,我想要跟踪的是外部库中的一个函数,我无法修改它,并且它会增长以使用大量的RAM,但是一旦函数执行完成就会释放它.有没有办法找出函数调用期间使用的RAM总量是多少?

python memory profiling

38
推荐指数
5
解决办法
2万
查看次数

有效地访问任意深度的词典

假设我有一个像这样的多级字典

mydict = {
    'first': {
        'second': {
            'third': {
                'fourth': 'the end'
             }
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

我想像这样访问它

test = get_entry(mydict, 'first.second.third.fourth')
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的是什么

def get_entry(dict, keyspec):
    keys = keyspec.split('.')

    result = dict[keys[0]]
    for key in keys[1:]:
       result = dict[key]

    return result
Run Code Online (Sandbox Code Playgroud)

有更有效的方法吗?根据%timeit,函数的运行时间是1.26us,而访问字典的标准方式是这样的

foo = mydict['first']['second']['third']['fourth']
Run Code Online (Sandbox Code Playgroud)

需要541ns.如果可能的话,我正在寻找将其修剪到800ns范围的方法.

谢谢

python recursion dictionary python-2.7

29
推荐指数
4
解决办法
821
查看次数

Python相当于PHP的memory_get_usage()?

我已经发现了以下问题,但我想知道是否有一种更快更脏的方法来获取python解释器当前用于我的脚本而不依赖于外部库的内存量的估计.

我来自PHP并且为此目的使用了memory_get_usage()memory_get_peak_usage(),我希望能找到一个等价物.

python

24
推荐指数
3
解决办法
7977
查看次数

熊猫集团通过内存释放

问题

我注意到在迭代过程中迭代通过Pandas GroupBy对象时分配的内存不会被释放.我使用resource.getrusage(resource.RUSAGE_SELF).ru_maxrss(这篇文章的第二个答案中的详细信息)来测量Python进程使用的活动内存总量.

import resource
import gc

import pandas as pd
import numpy as np

i = np.random.choice(list(range(100)), 4000)
cols = list(range(int(2e4)))

df = pd.DataFrame(1, index=i, columns=cols)

gb = df.groupby(level=0)
# gb = list(gb)
for i in range(3):
    print(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1e6)
    for idx, x in enumerate(gb):
        if idx == 0:
            print(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1e6)
    # del idx, x
    # gc.collect()
Run Code Online (Sandbox Code Playgroud)

打印以下总活动内存(以gb为单位)

0.671732
1.297424
1.297952
1.923288
1.923288
2.548624
Run Code Online (Sandbox Code Playgroud)

解决方案

取消注释del idx, xgc.collect()修复问题.但是我必须del …

python memory-management python-3.x pandas

19
推荐指数
1
解决办法
2026
查看次数

如何根据请求记录Django应用程序的内存使用情况

您是否了解了根据请求记录django应用程序内存使用情况的有效方法?

我有一个apache/mod_wsgi/django堆栈,它通常运行良好,但有时一个进程最终会占用大量内存.服务器最终缺少内存,交换很多,服务大大减慢.

这种情况很难修复,因为我不知道哪个请求会被归咎于此行为,我无法重现它.

我希望在生产中部署一些内容,在每次请求之前和之后记录进程的内存使用情况,并且开销最小.


在我开始重新发明轮子之前,我的同伴们的社区是否知道解决这个问题的任何现有解决方案?建议,中间件,片段或apache日志配置赞赏.

(我认为)我不需要的是:

  • 一组dev-stage分析/调试工具,我已经知道了一些,如果我知道要分析/调试什么,我会使用它们,看起来有点太多,无法永远监视生产中运行的服务.最重要的是,那些tol通常显示的是代码碎片的内存使用情况报告,只是查明错误的请求真的很有帮助.
  • 关于如何优化django应用程序的mem使用的通用建议,总是很好阅读,但这里的想法是"如何有效地追踪需要优化的请求".

我最接近的搜索结果:

python apache django memory-leaks

18
推荐指数
1
解决办法
5310
查看次数

Python脚本知道它使用了多少内存

python脚本如何知道它当前使用的系统内存量?(假设基于unix的操作系统)

python memory-management

8
推荐指数
2
解决办法
1万
查看次数

泡菜转储带进度条

我有一个非常大的json对象,我想将其转储到pickle文件中.有没有办法在使用时显示进度条pickle.dump

python dump pickle progress-bar

8
推荐指数
1
解决办法
2068
查看次数