我对python很新,我正在尝试制作一个基本的秒表脚本。我希望能够暂停秒表,但是等待显示下一个号码的time.sleep(1)
代码会干扰键盘事件。顺便说一句,我正在使用python包'keyboard'来获取活动。我已经尝试过线程,但据我所知,我无法暂停其他线程。
这是我的代码:
import time, keyboard, sys
print('Stopwatch \n')
input('Press enter to start:')
def counter():
stopwatch = 0
while True:
time.sleep(1)
stopwatch += 1
print(stopwatch)
question()
def question():
while True:
if keyboard.is_pressed('p'):
print('\nPaused')
input('Press enter to resume:')
if keyboard.is_pressed('s'):
print('\nStopped')
sys.exit()
counter()
我不一定需要question
函数,但正在尝试查看是否可以让它工作。我可以将这两个功能结合起来。
答案 0 :(得分:1)
我有一些好消息和一些坏消息。坏消息是,你不能按照你正在尝试的方式做你正在做的事情,这正是你现在面临的问题。 Python没有办法暂停一个函数的执行,它是全部或全部。你可以通过multiprocessing
或threading
来实现这一点,但是在你做好准备之前,你真的只是打开一堆蠕虫进入它。
好消息是你不需要做所有这些。你试图找到开始时间和结束时间之间的差异,对吧?让我们把它归结为基础并做到这一点。
import datetime
start = datetime.datetime.now()
input("Press enter to stop.")
stop = datetime.datetime.now()
result = (stop - start).total_seconds()
您可以通过等待其他操作(在while True
循环中执行上述操作)来实现暂停,获取开始和停止之间的秒数差异并将其添加到运行总计中。