我的计时器无法正常工作,因为它会永远打印,而不是我想要的。
我已经尝试过以多种方式重新组织脚本,但是结果始终是相同的。
type ExcludeAddress<T> = Pick<T, Exclude<keyof T, 'addresses'>>;
我想创建某种“后台计时器”,使其从执行脚本到关闭脚本一直运行,如果我在输入中键入特定的行,它将显示当前的编号。问题在于,对于每个计数的数字,它都会永远打印计时器。我想做一个一次性的事情,您可以在其中等待任意多的时间,然后输入输入内容,这将显示计时器所在的数字。
答案 0 :(得分:1)
您当前的程序必须等待input()完成。直到用户按下Enter键,编译器才会越过第二行。这样,功能从输入开始完成。
可以使用多种方法来完成此计时器,例如线程或计时器。有here和here的一些示例。对于线程,您需要一个进程用于用户输入,一个进程用于计时器。但是更好,更简单的方法是使用计时器并存储当前时间。我相信以下代码与您想要的代码有些相似:
import time
start_time = time.time()
def get_time():
current_time = time.time()
total = current_time - start_time
return total
while True:
CommandInput = input()
if CommandInput == "uptime":
y = get_time()
print(str(round(y)) + " seconds")
变量start_time记录开始时的当前时间。 time.time()以秒为单位获取当前时间。在输入后调用get_time函数,并通过减去当前时间减去开始时间来查看粘贴了多少时间。这样,您就不需要多个循环。
True循环的while只是等待用户输入,然后打印时间。然后重复执行直到退出程序。
答案 1 :(得分:0)
要编写类似的脚本,您需要查看一个名为asyncio(https://docs.python.org/3/library/asyncio.html)的模块,该模块将允许您同时运行多个程序。
这是一个异步的世界:
import asyncio
async def main():
print('Hello ...')
await asyncio.sleep(1)
print('... World!')
# Python 3.7+
asyncio.run(main())