我怎样才能有一个每秒更新一次的实时计时器来查看我的编程有多少 运行? python

How can I have a live timer that updates every second to see for how much my programming is running? python

有什么方法可以制作一个每秒更新一次的计时器,这样我就可以看到我的程序 运行ning 持续了多长时间。我试着做一个循环:

i = 0
for i in range(1000000):
    i += 1
    time.sleep(1)

然后我想将它打印到我的 discord.py 机器人中。这是它的样子:

async def on_ready():
    os.system('cls')
    print('', fg('red'))
    print(' _____ _                         ', fg('red'))
    print('|  ___| | __ _ _ __  _ __  _   _ ', fg('red'))
    print("| |_  | |/ _` | '_ \| '_ \| | | |", fg('red'))
    print('|  _| | | (_| | |_) | |_) | |_| |', fg('red'))
    print('|_|   |_|\__,_| .__/| .__/ \__, |', fg('red'))
    print('              |_|   |_|     |___/ ', fg('red'))
    print(f'Up-Time: {i}')
    print(f'Version: {version}', fg('blue'))
    print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~', fg('green'))
    print('[Server]: The Bot is online.', fg('green'))

“Up-Time”是我想要显示时间的地方,但是当我尝试 运行 它时,什么也没有显示。但是当我把 print(i) 放在我的循环下面时,它唯一做的就是打印出数字,而不是实际的服务器 运行ning.

抱歉,如果解释不够好,我是 Whosebug 和一般编程的超级新手。抱歉,如果打扰到您了,在此先感谢您!

你不应该将 time.sleepdiscord.py 一起使用,因为它会停止你应该使用 await asyncio.sleep(1).

的整个机器人

你也可以创建这个命令。

import datetime as dt

bot.launch_time = dt.datetime.utcnow()


@bot.command()
async def uptime(ctx):
    delta_uptime = dt.datetime.utcnow() - bot.launch_time
    hours, remainder = divmod(int(delta_uptime.total_seconds()), 3600)
    minutes, seconds = divmod(remainder, 60)
    days, hours = divmod(hours, 24)
    await ctx.send(f"{days}d, {hours}h, {minutes}m, {seconds}s")

现在您可以使用 {prefix}uptime 它会告诉您它已经运行了多长时间。

您可以通过 multi-threading 完成此操作。你有你的功能 运行 与你的时间一起运行并且两者都立即终止功能完成 运行:

import threading 
import time 

def calc(): #this function generates the square of all numbers between 1 and 56000000
    for i in range(1,56000000):
    i*i

t1 = threading.Thread(target=calc) 
t1.start() #starting a thread with the calc function
i = 1
while t1.is_alive(): #Check if the thread is alive
    time.sleep(1)# print time after every second
    print(f'Time elapsed ----------- {i}s')
    i = i+1
t1.join() #terminate thread once calc function is done 
print('Done!')