如何在不使用其他OS(Ubuntu,Windows ...)的情况下不使用额外应用程序的情况下,如何防止python进入休眠模式,但是在大多数情况下,我需要Linux解决方案

我正在制作大量工作时间的应用程序。它占用了大约80%的CPU,因此用户只需启动此应用程序,然后再离开键盘即可。所以我认为我需要锁定 sleep 模式的系统api或库之类的东西。我敢肯定,它存在。例如,如果您在操作系统上打开任何视频播放器,则您的(PC,笔记本电脑)将不会进入休眠模式,这与浏览器中的情况相同。

此外,Android(WakeLock)或Windows (SetThreadExecutionState)中也有同样的事情

最佳答案

我遇到了类似的情况,其中一个进程花费了足够长的时间来执行自身,以至于Windows会进入休眠状态。为了克服这个问题,我编写了一个脚本。

下面的简单代码段可以防止出现此问题。使用该脚本时,它将要求Windows在脚本运行时不要进入休眠状态。 (在某些情况下,例如电池电量用尽时,Windows会忽略您的请求。)

    class WindowsInhibitor:
        '''Prevent OS sleep/hibernate in windows; code from:
        https://github.com/h3llrais3r/Deluge-PreventSuspendPlus/blob/master/preventsuspendplus/core.py
        API documentation:
        https://msdn.microsoft.com/en-us/library/windows/desktop/aa373208(v=vs.85).aspx'''
        ES_CONTINUOUS = 0x80000000
        ES_SYSTEM_REQUIRED = 0x00000001

        def __init__(self):
            pass

        def inhibit(self):
            import ctypes
            print("Preventing Windows from going to sleep")
            ctypes.windll.kernel32.SetThreadExecutionState(
                WindowsInhibitor.ES_CONTINUOUS | \
                WindowsInhibitor.ES_SYSTEM_REQUIRED)

        def uninhibit(self):
            import ctypes
            print("Allowing Windows to go to sleep")
            ctypes.windll.kernel32.SetThreadExecutionState(
                WindowsInhibitor.ES_CONTINUOUS)

要运行脚本,只需:

    import os

    osSleep = None
    # in Windows, prevent the OS from sleeping while we run
    if os.name == 'nt':
        osSleep = WindowsInhibitor()
        osSleep.inhibit()

    # do slow stuff

    if osSleep:
        osSleep.uninhibit()

关于python - 防止python进入休眠模式(python上的Wakelock),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57647034/

10-10 19:02