我有一个偶尔挂起的功能。通常我会设置一个警报,但我在窗口,它不可用。有没有一个简单的方法可以解决这个问题,或者我应该创建一个调用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
最佳答案
最可靠的解决方案是使用子流程,然后终止该子流程。python2.6将.kill()添加到subprocess.popen()中。
我认为您的线程方法并不像您期望的那样工作。删除对线程对象的引用不会杀死线程。相反,您需要设置一个属性,一旦线程唤醒,它就会检查该属性。
关于python - Windows中的signal.alarm替换[Python],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/644073/