Эйч
Эйч
  • Эйч Плюс
  • Все менторы
Задачи/Go-разработчик/Параллельная загрузка контента с сайтов

Параллельная загрузка контента с сайтов

Условие задачи

Необходимо реализовать функцию ParallelDownload, которая должна параллельно обрабатывать входящие URL-адреса с помощью заданного количества воркеров и возвращать карту с результатами скачивания контента для каждого сайта

gopackage main

import (
  "context"
  "fmt"
  "math/rand"
  "time"
)

type SiteContent struct {
  Title   string
  Date    time.Time
  Content string
}

// Функция для имитации долгой работы, загрузки контента сайта
func DownloadSiteContent(ctx context.Context, url string) SiteContent {
  // Генерация случайного времени ожидания от 5 до 10 секунд
  rand.Seed(time.Now().UnixNano())
  sleepTime := time.Duration(rand.Intn(6)+5) * time.Second

  // Ожидание случайного времени
  time.Sleep(sleepTime)

  // Возвращаем имитацию контента сайта
  return SiteContent{
    Title:   "Заголовок сайта " + url,
    Date:    time.Now(),
    Content: "Содержание сайта " + url,
  }
}

// Функция для параллельного скачивания контента сайтов
func ParallelDownload(ctx context.Context, urls <-chan string, numWorkers int) map[string]SiteContent {
  // TODO
  return nil
}

func main() {
  urls := make(chan string)

  // Запускаем функцию для параллельного скачивания контента
  go func() {
    urls <- "http://example.com"
    urls <- "http://example.org"
    urls <- "http://example.net"
    close(urls)
  }()

  // Запускаем параллельное скачивание с максимальным количеством воркеров
  result := ParallelDownload(context.Background(), urls, 3)

  // Выводим результаты
  for url, content := range result {
    fmt.Printf("Сайт: %s\nЗаголовок: %s\nДата: %s\nСодержание: %s\n\n",
      url, content.Title, content.Date, content.Content)
  }
}

Профессия

Go-разработчик

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

🍪 Мы используем cookie и Яндекс Метрику, чтобы сайт работал и становился лучше. Подробнее в политике.

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Сервисы
AI поиск работы newПоиск вакансий newПоиск компаний newКонструктор резюме newВопросы с собеседований newЗадачи с собеседований newГайды к собеседованиям newПроверятор резюме newГенератор сопроводительных new
Поиски себя
Войти в ITКарьерная стратегияПовысить доходПрофориентация
Работа в России
Сопровождение до оффера Найти работу в РоссииРевью портфолиоРевью резюмеТестовое собеседование
Работа за рубежом
Найти работу за границейПомощь в оформлении LinkedInРевью резюме на английскомТестовое собеседование на английском
Навыки
Личный брендОценка навыковРазвитие навыков и компетенций
Поддержка
ВыгораниеОтношения с коллективомОтношения с руководителемСиндром самозванцаСложное увольнение
Для бизнеса
Аудит процессов компанииВыступление на внутреннем мероприятии компанииКонсалтинг бизнеса
Профессии
HRАдминистрированиеАналитикаДизайнИнформационная безопасностьИскусственный интеллектИсследованияКонсалтингКонтентМаркетингМенеджментНаука и образованиеОфисПоддержкаПредпринимательство
Компания
С чем помогаемОтзывы Вопросы и ответыСертификатыВебинарыСтать ментором

Услуги оказывает ООО «Эйч Карьера»
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, г. Москва, Старопименовский пер., д. 18, стр. 2, помещ./ком./этаж I/19/2
Платформа принадлежит ООО «Эйч Карьера»

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта