Sobes.tech
Back to questions
Junior — Middle
84

Как определить текущий размер или нагрузку, которую использует горутина в Go?

Companies where asked
Астрал-Софт

Answer from AI

sobes.tech AI

В Go напрямую определить точный размер или нагрузку конкретной горутины сложно, так как горутины легковесны и управляются рантаймом.

Однако, можно:

  • Использовать пакет runtime для получения общей информации о состоянии горутин (например, runtime.NumGoroutine() возвращает количество активных горутин).
  • Профилировать приложение с помощью pprof, чтобы увидеть использование CPU и памяти, а также распределение по горутинам.

Пример получения количества горутин:

package main

import (
    "fmt"
    "runtime"
    "time"
)

func worker() {
    time.Sleep(2 * time.Second)
}

func main() {
    for i := 0; i < 5; i++ {
        go worker()
    }
    fmt.Println("Active goroutines:", runtime.NumGoroutine())
    time.Sleep(3 * time.Second)
}

Для более детального анализа нагрузки на горутины используют профилирование и трассировку.