在一段时间后停止线程

我打算在一段时间后终止一些线程。 这些线程将运行一个无限的while循环,在这段时间内,它们可能会随机失去大量的时间。 线程的持续时间不能超过持续时间variables设置的时间。 如何在持续时间设定的长度之后,线程停止。

def main(): t1 = threading.Thread(target=thread1, args=1) t2 = threading.Thread(target=thread2, args=2) time.sleep(duration) #the threads must be terminated after this sleep 

这将工作, 如果你没有阻止。

如果你打算睡觉,那么使用这个事件来做睡眠是绝对必要的。 如果你利用这个事件睡觉,如果有人告诉你在“睡觉”时停下来,它会醒来。 如果你使用time.sleep()你的线程只会唤醒后停止。

 def main(): t1_stop= threading.Event() t1 = threading.Thread(target=thread1, args=(1, t1_stop)) t2_stop = threading.Event() t2 = threading.Thread(target=thread2, args=(2, t2_stop)) time.sleep(duration) #stop the thread2 t2_stop.set() def thread1(arg1, stop_event): while(not stop_event.is_set()): #similar to time.sleep() stop_event.wait(time) pass def thread2(arg1, stop_event): while(not stop_event.is_set()): stop_event.wait(time) pass 

如果你希望线程在程序退出时停止(如你的例子所示),然后使它们成为守护进程线程 。

如果你想让你的线程死于命令,那么你必须手工完成。 有各种各样的方法,但都涉及检查你的线程循环,看是否是时候退出(见尼克斯的例子)。