Встречается на собеседованиях • сегодня
Как ускорить асинхронную работу перебора массива с 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
интервью вопросы и ответы