import threading import time import sys class Countdown(threading.Thread): def __init__(self): super().__init__() self.stopped = False def run(self): for i in range(60, 0, -1): sys.stdout.write('\r' + '剩余时间:{:2d}秒'.format(i)) sys.stdout.flush() time.sleep(1) if self.stopped: break if not self.stopped: sys.stdout.write('\r' + '倒计时结束! \n') sys.stdout.flush() def stop(self): self.stopped = True if __name__ == '__main__': while True: countdown = Countdown() countdown.start() user_input = input('是否停止倒计时?(y/no)') countdown.stop() if user_input.lower() == 'y': break
时间: 2024-02-14 18:20:27 浏览: 104
Python RuntimeError: thread.__init__() not called解决方法
这段代码是一个倒计时程序,它使用了 Python 的 threading 模块来实现多线程。在主线程中,每次循环都会创建一个新的 Countdown 线程,并启动它。同时,主线程会等待用户输入,如果用户输入 y,则会停止倒计时线程。
在 Countdown 线程中,run() 方法会循环60次,每次输出剩余时间,并通过 time.sleep(1) 来让线程休眠1秒。同时,如果 self.stopped 被设置为 True,则会跳出循环,结束线程。stop() 方法则用来设置 self.stopped 的值,从而停止线程。
需要注意的是,在每次循环中,使用了 sys.stdout.write() 来输出文字,并使用了 \r 来实现覆盖输出,这样可以让输出的文字在同一行上不断更新。对于 flush() 方法,则是用来强制将输出立即打印到屏幕上,而不是等到缓存区满了才打印。
阅读全文