Windows中的signal.alarm替换[Python]

edu*_*ffy 15 python alarm

我有一个偶尔挂起的功能.通常我会设置一个警报,但我在Windows中,它不可用.有没有一个简单的方法,或者我应该创建一个调用time.sleep()的线程?


结束了一个线程.唯一的技巧是使用os._exit而不是sys.exit

import os
import time
import threading

class Alarm (threading.Thread):
    def __init__ (self, timeout):
        threading.Thread.__init__ (self)
        self.timeout = timeout
        self.setDaemon (True)
    def run (self):
        time.sleep (self.timeout)
        os._exit (1)

alarm = Alarm (4)
alarm.start ()
time.sleep (2)
del alarm
print 'yup'

alarm = Alarm (4)
alarm.start ()
time.sleep (8)
del alarm
print 'nope'  # we don't make it this far
Run Code Online (Sandbox Code Playgroud)

Fre*_*ory 2

正如您所提到的,您可以启动一个休眠该秒数的新线程。

或者您可以使用 Windows 的多媒体计时器之一(在 Python 中,位于 Windll.winmm 中)。我相信timeSetEvent这就是您正在寻找的。顺便在这里发现了一段使用它的代码。