Задать вопрос
@smf002

Как отсортировать ответы при использовании многопоточности?

Доброго времени суток.

В большом файле построчно расположены запросы к некому API сервису. Необходимо брать из файла эти запросы, выполнять вызов API и складывать ответы в один файл, причем порядок сохраненных ответов должен соответствовать порядку запросов (если запрос находится в седьмой строке, то и ответ на него должен быть в новом файле в седьмой строке). При последовательном выполнении получается довольно долго. При распараллеливании на несколько потоков с использованием очереди получается, что из-за неравномерности времени ответа сервиса, ответ на 7-ой запрос может быть получен позже чем на 8-й и в результирующем файле будет несоответствие. Формировать из ответов список или словарь для последующей сортировки не вариант, т.к. исходный файл может содержать до миллиона запросов. Подскажите алгоритм действий в данном случае.
  • Вопрос задан
  • 250 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
un1t
@un1t
Складывай в базу с указанием номера. Потом если надо в файл выгрузишь отсортировнные данные.
Ответ написан
@lega
Если размер ответа у всех запросов одинаковый, то можно записывать прямо по адресу (как в массиве). А так, можно сделать ф-ию save(index, result), через которую и сохранять результаты, она будет придерживать ответы соблюдая очередность, используя то же словарь например, в итоге, даже если у вас миллиард запросов, а параллельно отрабатывают только 1000 запросов, то размер словаря не превысит 1000.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы