我有一些代码,我想对此进行一些故障排除

时间:2019-07-11 23:42:00

标签: python

我的计时器无法正常工作,因为它会永远打印,而不是我想要的。

我已经尝试过以多种方式重新组织脚本,但是结果始终是相同的。

type ExcludeAddress<T> = Pick<T, Exclude<keyof T, 'addresses'>>;

我想创建某种“后台计时器”,使其从执行脚本到关闭脚本一直运行,如果我在输入中键入特定的行,它将显示当前的编号。问题在于,对于每个计数的数字,它都会永远打印计时器。我想做一个一次性的事情,您可以在其中等待任意多的时间,然后输入输入内容,这将显示计时器所在的数字。

2 个答案:

答案 0 :(得分:1)

您当前的程序必须等待input()完成。直到用户按下Enter键,编译器才会越过第二行。这样,功能从输入开始完成。

可以使用多种方法来完成此计时器,例如线程或计时器。有herehere的一些示例。对于线程,您需要一个进程用于用户输入,一个进程用于计时器。但是更好,更简单的方法是使用计时器并存储当前时间。我相信以下代码与您想要的代码有些相似:

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())