使一个线程执行不超过24小时然后死亡

时间:2013-09-11 16:34:28

标签: python multithreading

所以我在应用程序中有一些线程监视某些第三方端点上的临时可用文件。我希望他们在生活中履行他们的目的不超过一天,然后终止。最好的方法是什么?

关于使线程终止,如果它在一些函数上超时(如TCP挂起连接或其他东西),有许多关于使线程终止的问题,但我的目标更多地围绕为线程提供与其执行的函数无关的生命周期。我快速演示了我到目前为止的想法:

class Task(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.life = datetime.utcnow() + timedelta(seconds=60)

    def run(self):
        while True:
                if datetime.utcnow() < self.life:
                        #do stuff that i do 
                        print "hi"
                        time.sleep(5)
                else:
                        break

t = Task()
t.start()

这样可以正常但我是否以愚蠢的方式思考这个问题?有没有更好的方法来处理它?

1 个答案:

答案 0 :(得分:2)

def run(self):
    while datetime.utcnow() < self.life:
        #do stuff that i do 
        print "hi"
        time.sleep(5)