Я новичок в 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
Python asyncio когда-то застрял ⇐ Python
Программы на Python
1732513615
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79221763/python-asyncio-stuck-sometime[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия