如何在不使用其他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/