@Held6991

Как реализовать выполнение процессов асинхронно?

Здраствуйте, есть такая схема
618a704897c87736742791.png
Где первый элемент это очередь вместимостью 6 элементов, а дальше 2 обработчика, суть в том, что с какой-то рандомной задержкой (1-2 секунды) мы запускаем в очередь элемент и если один из обработчиков пустой, то выпускаем элемент с очереди в обработчик, где он задерживается на 5 секунд и выходит, но пока обрабатываются элементы в обработчиках, очередь наполняется и по мере выхода из обработчика элементов в него заходят новые и так определенное кол-во времени. Я хочу это реализовать с помощью библиотеки asyncio (подскажите, ли лучший это вариант или нет), но не могу сообразить, как сделать это, ибо вначале нужно сформировать весь список тасков, а только потом его асинхронно запустить, но в данном случае его заранее сгенерировать не получиться ведь. Напишите, пожалуйста, свои мысли и натолкните на верный путь (желательно с какими-то примерами), ибо что-то я запутался слегка, всех заранее благодарю
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
Вот отличный пример
https://stackoverflow.com/a/52615705
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Ну если тебе нужна очередь, то asyncio.Queue в руки - или её эквивалент из threading, если решишь использовать потоки.
Асинхронность поможет только если обработка элементов содержит большую долю ввода/вывода.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы