Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python time.sleep和suspend(即待机和休眠)_Python - Fatal编程技术网

Python time.sleep和suspend(即待机和休眠)

Python time.sleep和suspend(即待机和休眠),python,Python,例如,如果我执行time.sleep(100)并立即将计算机休眠99秒,那么下一条语句将在醒来后的1秒或100秒内执行吗 如果答案是1秒,那么不管休眠/待机的时间长短,您如何“睡眠”100秒?显然,您必须根据实际经过的时间进行睡眠 另一种选择(根据“不知何故”启动和停止的其他时钟睡觉)将难以管理。您的应用程序(正在休眠)将如何收到所有这些启动和停止活动的通知?对,它必须被唤醒,被告知它不应该运行,因为系统正在休眠 或者,也许可以使用一些超级复杂的操作系统级调度器来确定系统“繁忙”与“休眠”的时间

例如,如果我执行time.sleep(100)并立即将计算机休眠99秒,那么下一条语句将在醒来后的1秒或100秒内执行吗


如果答案是1秒,那么不管休眠/待机的时间长短,您如何“睡眠”100秒?

显然,您必须根据实际经过的时间进行睡眠

另一种选择(根据“不知何故”启动和停止的其他时钟睡觉)将难以管理。您的应用程序(正在休眠)将如何收到所有这些启动和停止活动的通知?对,它必须被唤醒,被告知它不应该运行,因为系统正在休眠

或者,也许可以使用一些超级复杂的操作系统级调度器来确定系统“繁忙”与“休眠”的时间是否与各种休眠进程的时间表相比较

太复杂了

实际上,如果仔细检查,睡眠是非常近似的,任何Unix信号都会中断睡眠。所以早起有很多原因。Control-C就是一个很好的例子。

时间。睡眠(N)
尝试睡眠至少N秒,也就是“挂钟”时间-当然不能保证睡眠将持续N秒;例如,线程在那个时候准备好再次执行,但它不一定会抢占其他线程在那个时候执行的任何线程——这是操作系统的决定,而不是任何编程语言的决定;另一方面,睡眠可能会被各种各样的事件(如中断)过早中断

如果你能在你的操作系统上找到一些类似时钟的东西,只有当系统的状态是你所关心的(例如,在你的情况下是“不hybernated”)时才会出现,那么如果你再次“太早”醒来,你当然可以回到睡眠状态

例如,在Windows 7上,专门记录了“不包括系统在睡眠或休眠中花费的时间”,并使用100纳秒的单位。因此,如果您调用它,例如通过
ctypes
,可以实现您想要的效果:

def unbiasedsleep(n):
  start = kernel32.QueryUnbiasedInterruptTime()
  target = start + n * 10 * 1000 * 1000
  while True:
    timeleft = target - kernel32.QueryUnbiasedInterruptTime()
    if timeleft > 0:
      time.sleep(timeleft / (10 * 1000 * 1000.0))

我不知道如何在其他版本的Windows或其他操作系统上获得与QueryUnbiasedInterruptTime相当的查询时间,但是,您没有告诉我们您感兴趣的操作系统,因此,提出一长串在不同环境下可能同样有效的方法是毫无意义的。

我不知道你到底想实现什么,但是

for i in range(100):sleep(1)
可能会起作用,因为冬眠只需要1秒钟的睡眠时间