{"library":"ps-mem","title":"ps-mem: Per-Program Memory Usage Reporter","description":"ps-mem is a Python utility designed to accurately report the core memory usage per program on Linux, distinguishing itself from tools that report per-process. It calculates RAM usage by summing both private and shared memory across all processes belonging to a given program. The current stable version is 3.14, released in May 2022, and it operates as a command-line tool, primarily written in Python 3, though it also supported Python 2.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install ps-mem"],"cli":{"name":"ps-mem","version":"sh: 1: ps-mem: not found"}},"imports":["import ps_mem\n# Then call ps_mem.main() after preparing sys.argv and redirecting stdout"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import subprocess\nimport os\n\n# Example 1: Run ps_mem as a command to get total memory usage\n# Note: ps_mem often requires root privileges for full accuracy.\n# This example tries without sudo first.\n\ntry:\n    # Using a common flag like -t for total or no flags for default output\n    result = subprocess.run(['ps_mem', '-t'], capture_output=True, text=True, check=True)\n    print(\"\\n--- ps_mem (total) output ---\")\n    print(result.stdout)\nexcept FileNotFoundError:\n    print(\"Error: 'ps_mem' command not found. Ensure it's installed and in your PATH.\")\nexcept subprocess.CalledProcessError as e:\n    print(f\"Error running ps_mem: {e}\")\n    print(f\"Stderr: {e.stderr}\")\n    print(\"Note: ps_mem often requires root privileges. Try running with sudo if you encounter permission errors.\")\n\n# Example 2: Programmatic call to ps_mem's main function (more advanced, requires mocking)\n# This is illustrative and not typically recommended for simple use cases due to sys.argv/stdout manipulation.\nimport sys\nfrom io import StringIO\nfrom unittest.mock import patch\n\n# Assuming ps_mem is installed and available in your Python environment\ntry:\n    import ps_mem\n\n    # Capture stdout and mock sys.argv\n    captured_output = StringIO()\n    with patch('sys.argv', ['ps_mem', '-S']), \\\n         patch('sys.stdout', captured_output):\n        # Call the main function with desired arguments (e.g., -S for swap info)\n        # ps_mem.main() might call sys.exit(), so wrap it if needed or catch SystemExit.\n        try:\n            ps_mem.main()\n        except SystemExit as e:\n            if e.code != 0: # 0 means successful exit\n                print(f\"ps_mem.main() exited with error code {e.code}\")\n\n    output_from_main = captured_output.getvalue()\n    print(\"\\n--- ps_mem.main() programmatic output ---\")\n    print(output_from_main)\n\nexcept ImportError:\n    print(\"Error: 'ps_mem' module not found. Install with 'pip install ps-mem'.\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred during programmatic call: {e}\")","lang":"python","description":"The primary way to use ps-mem programmatically is to execute it as an external command using `subprocess`, mimicking its typical command-line usage. A more advanced method involves directly calling `ps_mem.main()`, but this requires careful handling of `sys.argv` and `sys.stdout`.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"3.14","pypi_latest":"3.14","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.5,"avg_import_s":0.01,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"ps-mem","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0,"mem_mb":0.3,"disk_size":"17.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"ps-mem","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0,"mem_mb":0.3,"disk_size":"18M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"ps-mem","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.5,"disk_size":"19.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"ps-mem","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.01,"mem_mb":0.7,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"ps-mem","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"11.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"ps-mem","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"ps-mem","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"11.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"ps-mem","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"ps-mem","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0,"mem_mb":0.3,"disk_size":"17.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"ps-mem","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0,"mem_mb":0.3,"disk_size":"18M"}]}}