我有一个偶尔挂起的功能。通常我会设置一个警报,但我在窗口,它不可用。有没有一个简单的方法可以解决这个问题,或者我应该创建一个调用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/

10-12 06:25