/
dava
/
MagDipl
Обзор
Документация
Войти
/
dava
/
MagDipl
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
core/multiprocess_parser.py
56 строк
2 KB
david
beta_version
23 фев 2026, 11:20
23 фев 2026, 11:20
777dfb5
Код
Авторство
О чём код?
import sys import os # На Windows multiprocessing может иметь проблемы, поэтому делаем синхронную версию # Если нужен multiprocessing, можно раскомментировать код ниже USE_MULTIPROCESSING = False if USE_MULTIPROCESSING and sys.platform != "win32": from concurrent.futures import ProcessPoolExecutor from core.parser import LentaParser def parse_single_category(rubric_slug_and_limit): """ Функция верхнего уровня для ProcessPoolExecutor rubric_slug_and_limit: tuple (rubric_slug, limit) """ rubric_slug, limit = rubric_slug_and_limit parser = LentaParser() return parser.parse_rubric(rubric_slug, limit) def parse_categories_multiprocess(categories, limit_per_category=1000): """ categories: список категорий, например ["politics", "sport"] """ data = [] # Формируем список аргументов для map args = [(cat, limit_per_category) for cat in categories] with ProcessPoolExecutor() as executor: results = executor.map(parse_single_category, args) for category_articles in results: data.extend(category_articles) return data else: # Синхронная версия (более надёжная на Windows) from core.parser import LentaParser def parse_categories_multiprocess(categories, limit_per_category=1000): """ categories: список категорий, например ["politics", "sport"] Синхронная версия для Windows """ parser = LentaParser() data = [] for category in categories: articles = parser.parse_rubric(category, limit_per_category) data.extend(articles) return data def parse_all_news(limit=200): """ Парсит ВСЕ новости с Lenta.ru без категорий. Категории будут определены классификатором. """ parser = LentaParser() return parser.parse_all_news(limit=limit)