Search code examples
pythonmemory-management

Total memory used by Python process?


Is there a way for a Python program to determine how much memory it's currently using? I've seen discussions about memory usage for a single object, but what I need is total memory usage for the process, so that I can determine when it's necessary to start discarding cached data.


Solution

  • Here is a useful solution that works for various operating systems, including Linux, Windows, etc.:

    import psutil
    process = psutil.Process()
    print(process.memory_info().rss)  # in bytes 
    

    Notes:

    • do pip install psutil if it is not installed yet

    • handy one-liner if you quickly want to know how many MiB your process takes:

      import os, psutil; print(psutil.Process(os.getpid()).memory_info().rss / 1024 ** 2)
      
    • with Python 2.7 and psutil 5.6.3, it was process.memory_info()[0] instead (there was a change in the API later).