Параллельное выполнение задач в Go с Goroutines

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

gogoroutinesпараллелизм

👁 В Go можно легко и быстро выполнять несколько задач одновременно, используя goroutines. Это удобный способ для параллельных вычислений и обработки данных. Если нужно улучшить производительность при обработке нескольких независимых задач, Go с goroutines — отличный выбор.

Пример кода:

package main

import (
  "fmt"
  "time"
)

// Функция для эмуляции длительного процесса
func longProcess(taskID int) {
  fmt.Printf("Задача %d началась\n", taskID)
  time.Sleep(2 * time.Second)
  fmt.Printf("Задача %d завершена\n", taskID)
}

func main() {
  // Запуск нескольких goroutines
  for i := 1; i <= 3; i++ {
    go longProcess(i)
  }

  // Пауза, чтобы все goroutines успели завершиться
  time.Sleep(3 * time.Second)
}

Как это работает и преимущества :

  • В Go создание параллельных задач осуществляется с помощью ключевого слова go, которое запускает функцию как goroutine
  • В примере мы запускаем 3 задачи параллельно, каждая из которых вызывает функцию longProcess, которая имитирует долгую работу с помощью time.Sleep
  • В главной функции мы добавляем time.Sleep, чтобы программа успела дождаться завершения всех goroutines (в реальных приложениях для синхронизации лучше использовать механизмы синхронизации, например, sync.WaitGroup)
  • Простота параллельного выполнения задач с использованием goroutines
  • Отлично подходит для I/O-операций, параллельной обработки данных, а также работы с API или базами данных
  • Эффективно использует многопроцессорные системы

❗️ Go — идеальный выбор, если нужно параллельно выполнять несколько задач, не усложняя код, с минимальными затратами ресурсов.

tags: #go #разработка

❤️ @recura_tech

Скриншот тёмной темы с примером кода на Go, демонстрирующий функцию longProcess и запуск нескольких goroutines; виден логотип RECURA и интерфейс с подсветкой синтаксиса.
Скриншот примера кода Go с запуском goroutines и логотипом RECURA

Читайте так же