@beduin01

Как повысить скорость обработки данных?

Есть скрипт разбирающий XML и записывающий результаты в БД. XML файлов много. Я решил поднять скорость обработки и стал создавать по 10 потоков для обработки, но когда сравнил с однопоточной версией, то оказалось что разницы практически никакой нет.

Почитал документацию. Я правильно понимаю что из-за GIL приложение на Питоне не может больше одного ядра использовать? Сейчас эту проблему можно как-то обойти?
  • Вопрос задан
  • 279 просмотров
Пригласить эксперта
Ответы на вопрос 4
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Решение в лоб - использовать мультипроцессинг. Разумный подход - это проанализировать ваш код, найти в нём узкие места и определить их тип. Я серьёзно сомневаюсь, что разбор XML и запись данных в базу - это CPU-bound задача, ускорение которой возможно через использование дополнительных ядер.
Ответ написан
Mi11er
@Mi11er
A human...
Посмотрите в сторону multiprocessing
Ответ написан
Комментировать
@asd111
В Sqlite надо делать все инсерты в одной транзакции иначе будет тормозить. Ещё можно сделать PRAGMA synchronous=OFF https://www.sqlite.org/faq.html#q19
Ответ написан
Комментировать
Из основого приложения читайте строки из sqlite и отдавайте процессам-воркерам на обработку, напр. используя multiprocessing.
Из sqlite читайте строки пачками, чтобы реже к ней обращаться.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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