Встречается на 1% собеседований по Python
Как ускорить асинхронную работу перебора массива с 10000 ссылок
Используйте asyncio.gather() с ограничением количества одновременных запросов через семафор или asyncio.Semaphore. Это предотвратит перегрузку системы и ускорит обработку.
Пример:
python
import aiohttp
import asyncio
async def fetch(url, session, sem):
async with sem:
async with session.get(url) as response:
return await response.text()
async def main(urls):
sem = asyncio.Semaphore(100) # Ограничиваем 100 одновременных запросов
async with aiohttp.ClientSession() as session:
tasks = [fetch(url, session, sem) for url in urls]
return await asyncio.gather(*tasks, return_exceptions=True)
urls = [...] # 10000 ссылок
results = asyncio.run(main(urls))
text
Ключевые моменты:
- Ограничение одновременных запросов через семафор
- Использование сессии aiohttp для переиспользования соединений
- Пакетная обработка через gather
- Обработка ошибок через return_exceptions
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы