嘿,我一直在用python time类做一个计时器。该时间应该在用户按下F7之后开始,但是由于某些原因,我一运行程序,它就开始计时。
from pynput import keyboard
from time import perf_counter
from time_sig import signature
print("Welcome to your smart timer")
datafile = open('data', 'a')
ex_name = input("Please type in the exercise type: ")
datafile.write("\nStarted exercise: " + ex_name.upper())
print("Click F7 to start, F8 every time you finished a question and F9 to stop")
count = 0
def execute_F7():
print("starting timer")
t = perf_counter()
def execute_F8():
print("finished question")
tic = perf_counter
transfer = signature(tic)
global count
count += 1
datafile.write("\nfinished question number " + str(count) + " on time: " + str(signature.convert(transfer)) + " in (" + str(signature.q_time(transfer)) + ")")
print(str(signature.convert(transfer)))
def execute_F4():
tic = perf_counter
transfer = signature(tic)
print(str(signature.convert(transfer)))
datafile.write("\nfinished question number " + str(count) + " on time: " + str(signature.convert(transfer)) + " in (" + str(signature.q_time(transfer)) + ")")
datafile.write("\nWorkout done!")
print("Workout done!")
exit()
def on_press(key):
if key == keyboard.Key.f7:
execute_F7()
elif key == keyboard.Key.f8:
execute_F8()
elif key == keyboard.Key.f4:
execute_F4()
with keyboard.Listener(on_press=on_press) as listener:
listener.join()
非常感谢您的帮助!
发布于 2020-04-26 21:56:24
perf_counter
总是在后台运行;它的绝对值是未定义的,但根据您所看到的,我希望它从0开始。要对特定事件计时,需要从较早的参考值中减去perf_counter()
。类似于:
from time import perf_counter
from typing import Optional
class Stopwatch:
"""Measures elapsed time in seconds."""
def __init__(self):
self._start: Optional[float] = None
def start(self) -> None:
"""Starts the stopwatch."""
self._start = perf_counter()
def stop(self) -> float:
"""Stops the stopwatch, returning the elapsed time."""
assert self._start is not None, "Missing call to start()"
elapsed = perf_counter() - self._start
self._start = None
return elapsed
https://stackoverflow.com/questions/61448397
复制相似问题