~ubuntu-branches/debian/experimental/spyder/experimental

« back to all changes in this revision

Viewing changes to spyderlib/utils/system.py

  • Committer: Package Import Robot
  • Author(s): Picca Frédéric-Emmanuel
  • Date: 2013-01-20 12:19:54 UTC
  • mfrom: (1.1.16)
  • Revision ID: package-import@ubuntu.com-20130120121954-1jt1xa924bshhvh0
Tags: 2.2.0~beta1+dfsg-2
fix typo ipython-qtconsol -> ipython-qtconsole

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- coding: utf-8 -*-
 
2
#
 
3
# Copyright © 2012 Pierre Raybaut
 
4
# Licensed under the terms of the MIT License
 
5
# (see spyderlib/__init__.py for details)
 
6
 
 
7
"""Operating system utilities"""
 
8
 
 
9
 
 
10
import os
 
11
 
 
12
# Local imports
 
13
from spyderlib.utils import programs
 
14
 
 
15
 
 
16
def windows_memory_usage():
 
17
    """Return physical memory usage (float)
 
18
    Works on Windows platforms only"""
 
19
    from ctypes import windll, wintypes
 
20
    class MemoryStatus(wintypes.Structure):
 
21
        _fields_ = [('dwLength', wintypes.DWORD),
 
22
                    ('dwMemoryLoad', wintypes.DWORD),
 
23
                    ('ullTotalPhys', wintypes.c_uint64),
 
24
                    ('ullAvailPhys', wintypes.c_uint64),
 
25
                    ('ullTotalPageFile', wintypes.c_uint64),
 
26
                    ('ullAvailPageFile', wintypes.c_uint64),
 
27
                    ('ullTotalVirtual', wintypes.c_uint64),
 
28
                    ('ullAvailVirtual', wintypes.c_uint64),
 
29
                    ('ullAvailExtendedVirtual', wintypes.c_uint64),]
 
30
    memorystatus = MemoryStatus()
 
31
    # MSDN documetation states that dwLength must be set to MemoryStatus
 
32
    # size before calling GlobalMemoryStatusEx
 
33
    # http://msdn.microsoft.com/en-us/library/aa366770(v=vs.85)
 
34
    memorystatus.dwLength = wintypes.sizeof(memorystatus)
 
35
    windll.kernel32.GlobalMemoryStatusEx(wintypes.byref(memorystatus))
 
36
    return float(memorystatus.dwMemoryLoad)
 
37
 
 
38
def psutil_phymem_usage():
 
39
    """Return physical memory usage (float)
 
40
    Requires the cross-platform psutil (>=v0.3) library
 
41
    (http://code.google.com/p/psutil/)"""
 
42
    import psutil
 
43
    return psutil.phymem_usage().percent
 
44
 
 
45
if programs.is_module_installed('psutil', '>=0.3.0'):
 
46
    #  Function `psutil.phymem_usage` was introduced in psutil v0.3.0
 
47
    memory_usage = psutil_phymem_usage
 
48
elif os.name == 'nt':
 
49
    # Backup plan for Windows platforms
 
50
    memory_usage = windows_memory_usage
 
51
else:
 
52
    raise ImportError, "Feature requires psutil 0.3+ on non Windows platforms"
 
53
 
 
54
 
 
55
if __name__ == '__main__':
 
56
    print "*"*80
 
57
    print memory_usage.__doc__
 
58
    print memory_usage()
 
59
    print "*"*80
 
60
    print windows_memory_usage.__doc__
 
61
    print windows_memory_usage()