代码之家  ›  专栏  ›  技术社区  ›  Elliot Gorokhovsky

检测python中的交换

  •  6
  • Elliot Gorokhovsky  · 技术社区  · 10 年前

    确定运行脚本的计算机是否使用交换内存的最佳方法是什么?它应该尽可能跨平台。一个解决方案是运行一个类似于 top 作为子流程,但我希望有更好的方法。

    2 回复  |  直到 10 年前
        1
  •  6
  •   user6025378 user6025378    10 年前

    您可以使用该模块 psutil 。但它不是标准库中的模块,您必须使用安装 pip 程序包管理器。

    pip install psutil
    

    交换使用数据可以使用 psutil.swap_memory() 。它返回一个命名元组。

    >>> import psutil
    >>> psutil.swap_memory()
    sswap(total=2097147904L, used=886620160L, free=1210527744L, percent=42.3, sin=1050411008, sout=1906720768)
    
        2
  •  5
  •   Community Mohan Dere    9 年前

    我在这条线上看到了 Stackoverflow: Profile Memory Allocation in Python 关于如何实时记录内存使用情况的说明。然后使用 mrpof .(线程有点旧,但我想仍然准确)。

    以下是本模块的官方文档: memory profiler pypi documentation

    如果您不想阅读文档,首先必须通过以下方式安装软件包:

    $ easy_install -U memory_profiler # pip install -U memory_profiler
    

    然后将其用于如下脚本:

    $ mprof run you_script_python.py
    $ mprof plot
    

    生成如下文件:( source )

    mprof_example

    或者更简单地说:

    $ python -m memory_profiler you_script_python.py
    

    将产生以下输出:

    Line #    Mem usage  Increment   Line Contents
     ==============================================
     3                           @profile
     4      5.97 MB    0.00 MB   def my_func():
     5     13.61 MB    7.64 MB       a = [1] * (10 ** 6)
     6    166.20 MB  152.59 MB       b = [2] * (2 * 10 ** 7)
     7     13.61 MB -152.59 MB       del b
     8     13.61 MB    0.00 MB       return a
    

    它也适用于窗口。根据作者Fabian Pedregosa的说法,模块 memory profiler 是跨平台的: Stackoverflow: Which Python memory profiler is recommended?

    对不起,所有的链接!