Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 9

asyncio.wait vs asyncio.gather

24.01.2020, 03:18. Показов 2934. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Вопросы внизу.
Есть два похожих теста:
#1 - asyncio.wait
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import asyncio
import random
 
async def coro(task_num):
    slp = random.uniform(0, 5)
    print("Starting", task_num)
    await asyncio.sleep(slp)
    print("Finished", task_num, '  Waited:', slp)
    return task_num
 
loop = asyncio.get_event_loop()
tasks = [coro(task_num) for task_num in range(1, 5)]
finished, unfinished = loop.run_until_complete(
    asyncio.wait(tasks, return_when=asyncio.ALL_COMPLETED))
 
for task in finished:
    print(task.result())
Результат asyncio.wait:
Code
1
2
3
4
5
6
7
8
9
10
11
12
Starting 3
Starting 2
Starting 1
Starting 4
Finished 4   Waited: 2.465447365500718
Finished 2   Waited: 3.252234981305373
Finished 1   Waited: 4.059306544082098
Finished 3   Waited: 4.489274783935498
1
4
3
2
#2 - asyncio.gather
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import asyncio
import random
 
async def coro(task_num):
    slp = random.uniform(0, 5)
    print("Starting", task_num)
    await asyncio.sleep(slp)
    print("Finished", task_num, '  Waited:', slp)
    return task_num
 
loop = asyncio.get_event_loop()
tasks = asyncio.gather(*[coro(task_num) for task_num in range(1, 5)])
all_groups = asyncio.gather(tasks)
results = loop.run_until_complete(all_groups)
 
for task in results:
    print(task)
Результат asyncio.gather:
Code
1
2
3
4
5
6
7
8
9
Starting 1
Starting 2
Starting 3
Starting 4
Finished 2   Waited: 0.023805889873666497
Finished 1   Waited: 1.942776250239694
Finished 3   Waited: 3.426989460919076
Finished 4   Waited: 4.484858712984893
[1, 2, 3, 4]
Вопросы:
1. Почему в первом тесте задачи стартуют не в последовательности 1,2,3,4 (как во втором тесте)?
2. Почему в первом тесте, когда я перебираю завершенные задачи (for task in finished), результат выводится:
  • НЕ в той последовательности в которой задачи ставились (1,2,3,4 (как во втором)),
  • НЕ в той последовательности в которой задачи фактически были поставлены (3,2,1,4)
  • НЕ в той последовательности в которой задачи фактически завершились (4,2,1,3)?
3. Как-нибудь возможно влиять на ранжирование/приоритетность постановки задач и получения результатов в первом случае?
4. Почему в 1 и 2 случае задачи ставятся по разному и результат ранжируется тоже непонятно как? Тенденция сохраняется даже если slp = 1e-300.

Спасибо всем заранее!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.01.2020, 03:18
Ответы с готовыми решениями:

Asyncio парсер
Подскажите направление, словами, нужен подход к задаче. Используя asynсio надо рекурсивно проверить все внешние ссылки на странице. ...

asyncio Асинхронный Сервер
Доброго времени суток форумчане. Питон прекрасен и многогранен. Предельно прост и понятен :) ... За исключением asyncio Задача...

Параллельный запуск 2 методов через asyncio
Есть необходимость сделать код, продолжающий работу даже при поступлении запроса. Пересмотрела и перечитала кучу информации, но все равно...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.01.2020, 03:18
Помогаю со студенческими работами здесь

Multiprocessing vs multithreading vs AsyncIO при загрузке файлов
Вопрос всезнающему All ! Нужно загрузить/выгрузить много разноразмерных файлов через протокол http. Какой вариант посоветуете выбрать...

В asyncio отстутвует метод create_task и метод run
Здравствуйте, у меня в asyncio отсутствует метод create_task и метод run. Мой код: from bs4 import BeautifulSoup import json import...

Asyncio
Использую библиотеку aiogram. Я хочу закрыть задачу созданной с помощью asyncio.create_task(function(message)) По нажатию...

WxPython и asyncio
Добрый день. Подскажите можно ли в приложении wxPython использовать модуль asyncio? Как я понимаю wxPython, при старте приложения,...

Vk_api и asyncio
Так вот суть в том, что создаю приложение, которое работает с вк и из-за того что запросов много, решил использовать асинхронность, и тут...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru