Python asyncio когда-то застрялPython

Программы на Python
Ответить
Anonymous
 Python asyncio когда-то застрял

Сообщение Anonymous »

Я новичок в Python. Я хочу создать n-задач, которые выполняются параллельно. У меня есть пример кода с использованием asyncio. Код работает нормально около 1 минуты, но иногда происходит странное время, как на картинке. Подскажите пожалуйста, где я ошибся и как это исправить. Спасибо
import asyncio
import time
tasks = []
async def task1():
try:
while True:
start_time = time.time()
await asyncio.sleep(0.2)
print(f"Task 1 running, taking {time.time() - start_time:.2f} seconds")
except asyncio.CancelledError:
print("Task 1 cancelled!")
raise

async def task2():
try:
while True:
start_time = time.time()
await asyncio.sleep(0.25)
print(f"Task 2 running, taking {time.time() - start_time:.2f} seconds")
except asyncio.CancelledError:
print("Task 2 cancelled!")
raise
async def task3():
try:
while True:
start_time = time.time()
await asyncio.sleep(0.3)
print(f"Task 3 running, taking {time.time() - start_time:.2f} seconds")
except asyncio.CancelledError:
print("Task 3 cancelled!")
raise
...... Multi task create here
async def main():
t1 = asyncio.create_task(task1())
tasks.append(t1)
t2 = asyncio.create_task(task2())
tasks.append(t2)
t3 = asyncio.create_task(task3())
tasks.append(t3)
..... Multi task add here
try:
# Run tasks indefinitely
await asyncio.gather(*tasks)
except KeyboardInterrupt:
print("Gracefully shutting down...")
t1.cancel()
t2.cancel()
t3.cancel()
t4.cancel()
t5.cancel()
await asyncio.gather(*tasks, return_exceptions=True)

# Run the event loop
asyncio.run(main())

Задача зависает на красном цикле
2024-11-25 12:03:04 Task 1 running, taking 0.20 seconds
2024-11-25 12:03:04 Task 2 running, taking 0.25 seconds
2024-11-25 12:03:04 Task 3 running, taking 0.30 seconds
2024-11-25 12:03:04 Task 4 running, taking 0.40 seconds
2024-11-25 12:02:53 Task 1 running, taking -11.26 seconds
2024-11-25 12:02:53 Task 2 running, taking -11.21 seconds
2024-11-25 12:02:53 Task 3 running, taking -11.17 seconds
2024-11-25 12:02:53 Task 1 running, taking 0.20 seconds
2024-11-25 12:02:53 Task 5 running, taking -10.97 seconds
2024-11-25 12:03:04 Task 2 running, taking 11.69 seconds
2024-11-25 12:03:04 Task 4 running, taking 0.37 seconds
2024-11-25 12:03:04 Task 1 running, taking 11.64 seconds
2024-11-25 12:03:04 Task 3 running, taking 11.74 seconds
2024-11-25 12:03:05 Task 2 running, taking 0.25 seconds


Подробнее здесь: https://stackoverflow.com/questions/792 ... k-sometime
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»