복붙노트

[PYTHON] 파이썬에서 컴퓨터가 배터리 전원으로 작동하는지 어떻게 감지 할 수 있습니까?

PYTHON

파이썬에서 컴퓨터가 배터리 전원으로 작동하는지 어떻게 감지 할 수 있습니까?

나는 파이 게임 (pygame)으로 놀고 있는데, 컴퓨터에서 배터리 전원을 사용하면 CPU 사용량을 줄이고 배터리 수명을 연장하기 위해 초당 프레임 수를 줄이는 것이 좋습니다.

컴퓨터가 현재 배터리 전원을 사용하고 있는지 여부를 파이썬에서 어떻게 확인할 수 있습니까?

Windows에서 Python 3.1을 사용하고 있습니다.

해결법

  1. ==============================

    1.win32api없이이 작업을 수행하려면 내장 된 ctypes 모듈을 사용할 수 있습니다. 나는 보통 win32api없이 CPython을 돌린다. 그래서 나는이 솔루션을 좋아한다.

    win32api없이이 작업을 수행하려면 내장 된 ctypes 모듈을 사용할 수 있습니다. 나는 보통 win32api없이 CPython을 돌린다. 그래서 나는이 솔루션을 좋아한다.

    그것은 당신이 SYSTEM_POWER_STATUS 구조체를 정의해야하기 때문에 GetSystemPowerStatus ()에 조금 더 많은 작업을하지만 나쁜 것은 아닙니다.

    # Get power status of the system using ctypes to call GetSystemPowerStatus
    
    import ctypes
    from ctypes import wintypes
    
    class SYSTEM_POWER_STATUS(ctypes.Structure):
        _fields_ = [
            ('ACLineStatus', wintypes.BYTE),
            ('BatteryFlag', wintypes.BYTE),
            ('BatteryLifePercent', wintypes.BYTE),
            ('Reserved1', wintypes.BYTE),
            ('BatteryLifeTime', wintypes.DWORD),
            ('BatteryFullLifeTime', wintypes.DWORD),
        ]
    
    SYSTEM_POWER_STATUS_P = ctypes.POINTER(SYSTEM_POWER_STATUS)
    
    GetSystemPowerStatus = ctypes.windll.kernel32.GetSystemPowerStatus
    GetSystemPowerStatus.argtypes = [SYSTEM_POWER_STATUS_P]
    GetSystemPowerStatus.restype = wintypes.BOOL
    
    status = SYSTEM_POWER_STATUS()
    if not GetSystemPowerStatus(ctypes.pointer(status)):
        raise ctypes.WinError()
    print 'ACLineStatus', status.ACLineStatus
    print 'BatteryFlag', status.BatteryFlag
    print 'BatteryLifePercent', status.BatteryLifePercent
    print 'BatteryLifeTime', status.BatteryLifeTime
    print 'BatteryFullLifeTime', status.BatteryFullLifeTime
    

    내 시스템에서이 내용을 인쇄합니다 (기본적으로 "데스크탑, 플러그 인"을 의미 함).

    ACLineStatus 1
    BatteryFlag -128
    BatteryLifePercent -1
    BatteryLifeTime 4294967295
    BatteryFullLifeTime 4294967295
    
  2. ==============================

    2.쉽습니다. Win32api 모듈을 가져 와서 Python에서 Windows API 함수 GetSystemPowerStatus를 호출하면됩니다.

    쉽습니다. Win32api 모듈을 가져 와서 Python에서 Windows API 함수 GetSystemPowerStatus를 호출하면됩니다.

    편집 : GetSystemPowerStatus () 빌드 219 (2014-05-04)로 win32api 아직 구현되지 않습니다.

  3. ==============================

    3.C에서이 정보를 검색하는 가장 신뢰할 수있는 방법은 GetSystemPowerStatus를 사용하는 것입니다. 배터리가 없으면 ACLineStatus는 128로 설정됩니다. psutil은이 정보를 Linux, Windows 및 FreeBSD에서 노출하므로 배터리가 있는지 확인할 수 있습니다

    C에서이 정보를 검색하는 가장 신뢰할 수있는 방법은 GetSystemPowerStatus를 사용하는 것입니다. 배터리가 없으면 ACLineStatus는 128로 설정됩니다. psutil은이 정보를 Linux, Windows 및 FreeBSD에서 노출하므로 배터리가 있는지 확인할 수 있습니다

    >>> import psutil
    >>> has_battery = psutil.sensors_battery() is not None
    

    배터리가 있고 전원 케이블이 연결되어 있는지 여부를 알고 싶다면 다음을 수행하십시오.

    >>> import psutil
    >>> psutil.sensors_battery()
    sbattery(percent=99, secsleft=20308, power_plugged=True)
    >>> psutil.sensors_battery().power_plugged
    True
    >>> 
    
  4. ==============================

    4.크로스 플랫폼 전원 상태 표시를위한 간단한 방법은 pip로 설치할 수있는 'power'모듈입니다

    크로스 플랫폼 전원 상태 표시를위한 간단한 방법은 pip로 설치할 수있는 'power'모듈입니다

        import power
        ans = power.PowerManagement().get_providing_power_source_type()
        if not ans:
            print "plugged into wall socket"
        else:
            print "on battery"
    
  5. from https://stackoverflow.com/questions/6153860/in-python-how-can-i-detect-whether-the-computer-is-on-battery-power by cc-by-sa and MIT license