Se o objetivo for mostrar o tempo total passado desde o início da execução, independente da função, uma solução mais precisa seria calcular o tempo real com time.perf_counter() ou asyncio.get_event_loop().time().
import random
import asyncio
async def temp(start_time):
while True:
await asyncio.sleep(2)
t = random.randrange(25, 28)
elapsed = int(asyncio.get_event_loop().time() - start_time)
print(f"[{elapsed}s] Temperature: {t:.1f} C")
async def humi(start_time):
while True:
await asyncio.sleep(3)
h = random.randint(45, 68)
elapsed = int(asyncio.get_event_loop().time() - start_time)
print(f"[{elapsed}s] Humidity: {h}%")
async def air(start_time):
while True:
await asyncio.sleep(5)
a = random.choice(["Good", "Regular", "Bad"])
elapsed = int(asyncio.get_event_loop().time() - start_time)
print(f"[{elapsed}s] Air quality: {a}")
async def main():
start_time = asyncio.get_event_loop().time()
tasks = [
asyncio.create_task(temp(start_time)),
asyncio.create_task(humi(start_time)),
asyncio.create_task(air(start_time))
]
await asyncio.gather(*tasks)
await main()