Skip to content

Instantly share code, notes, and snippets.

@swinman
Forked from kbarnes3/powermanagement.py
Created February 17, 2016 12:01
Show Gist options
  • Save swinman/752a77b7dc07fd2f8c95 to your computer and use it in GitHub Desktop.
Save swinman/752a77b7dc07fd2f8c95 to your computer and use it in GitHub Desktop.
# This file provides a long_running decorator to indicate that a function needs a long amount of time to complete and
# the computer should not enter standby. This file currently only works on Windows and is a no-op on other platforms.
import ctypes
import platform
ES_CONTINUOUS = 0x80000000
ES_SYSTEM_REQUIRED = 0x00000001
def _set_thread_execution(state):
ctypes.windll.kernel32.SetThreadExecutionState(state)
def prevent_standby():
if platform.system() == 'Windows':
_set_thread_execution(ES_CONTINUOUS | ES_SYSTEM_REQUIRED)
def allow_standby():
if platform.system() == 'Windows':
_set_thread_execution(ES_CONTINUOUS)
def long_running(func):
def inner(*args, **kwargs):
prevent_standby()
result = func(*args, **kwargs)
allow_standby()
return result
return inner
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment