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

Как грамотно распараллелить обработку большого количества файлов?

Есть большое колличество файлов. Около миллиона. Это PE файлы, каждый из них парсится, обрабатывается и информация записывается в базу.

Спарсить надо разово. Потом база пополняется постепенно. Но та как проект в стадии разработки. Структура немного меняется. И нужно делать миграции.

Суть вопроса в том, как максимально эффективно распараллелить обработку большого колличества файлов. Если использовать потоки, ускорить ли это работу? Знаю есть pypy.

UPD. Опишу подробней задачу. Есть много семплов PE (portable executable) файлов. Нужно обработать их большое колличество, чтобы выделить закономерности, статистику и тд. Каждый файл читается и их него парсится нужная информация. Какая именно можно глянуть тут https://github.com/g00dv1n/KnowledgeBase/blob/mast... .
Суть вопроса была в том, как можно максимально быстро обработать большое количество файлов.
  • Вопрос задан
  • 264 просмотра
Подписаться 2 Оценить 2 комментария
Решения вопроса 1
@kgbplus
multiprocessing может ускорить, если парсинг одного файла занимает существенное время, threading не ускорит, т.к. исполняется на одном ядре. Если основное время уходит на ожидание операций с БД то помоему и то и то ускорит
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++
Что рекомендую почитать :
1. Что такое CPU bound, IO Bound, Memory Bound?
2. Что такое GIL ?

Если кратко, то:
1. В Python-е "мультипоточность" решается в различных процессах, из-за п.2
2. Знайте свою ситуацию как можно лучше!
Если у вас все упарается в IO, к примеру много запросов от пользователей, то это одно. А если очень большой вычислительный процесс, к примеру подбор пароля, накладывание защиты, виртуализация кода и т.д. и т.п. это другое.

Программисту достаточно часто приходится регулярно жертвовать чем-либо, чтобы что-то другое стало по-лучше. К примеру памятью лишь бы ЦПУ сэкономить, либо ЦПУ чтобы IO было по-круче.
Ответ написан
@asd111
Комментировать
Ваш ответ на вопрос

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

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