runtime paketi
- Go kursu
- Uzman
- Ders 19/34
- 4 dk
runtime paketinin temel fonksiyonlarını öğrenirsin.
runtime paketi
runtime paketi, programının altında çalışan Go çalışma zamanıyla konuşmanı sağlar: zamanlayıcı, bellek ve yığın bilgisi.
fmt.Println(runtime.NumCPU()) // çekirdek sayısı
fmt.Println(runtime.NumGoroutine()) // canlı goroutine
fmt.Println(runtime.GOOS, runtime.GOARCH)Bu fonksiyonlar teşhis ve izleme içindir; uygulama mantığını onlara bağlamak genellikle iyi bir fikir değildir.
runtime/metrics
Go 1.16 ile gelen runtime/metrics, ReadMemStats'tan daha ucuz ve kararlı adlı ölçümler sunar:
s := []metrics.Sample{{Name: "/sched/goroutines:goroutines"}}
metrics.Read(s)
fmt.Println(s[0].Value.Uint64())Tüm adlar metrics.All() ile listelenir; Prometheus istemcileri de bu paketi kullanır.
Uygulama Goroutine metriği
runtime/metrics ile "/sched/goroutines:goroutines" örneğini oku ve değerin 0'dan büyük olduğunu yazdır.
Başlangıç kodu
package main
import (
"fmt"
"runtime/metrics"
)
func main() {
// buraya yaz
}Örnek çözüm
package main
import (
"fmt"
"runtime/metrics"
)
func main() {
s := []metrics.Sample{{Name: "/sched/goroutines:goroutines"}}
metrics.Read(s)
fmt.Println(s[0].Value.Uint64() > 0)
}Beklenen çıktı
true
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>runtime.GOOS</code> ne zaman belirlenir?
- Kullanıcı ayarlar
- Derleme anında (hedef işletim sistemi) Doğru cevap
- Her çalıştırmada yeniden ölçülür
- GC döngüsünde
Açıklama: GOOS ve GOARCH derlenen ikilinin hedefidir; çapraz derlemede derleyen makineden farklı olabilir.
2 Çekirdek sayısı
n := runtime.____()
n := runtime.NumCPU()
Açıklama: NumCPU sürecin kullanabileceği mantıksal CPU sayısını verir.
3 runtime fonksiyonu
| Kavram | Anlamı |
|---|---|
NumCPU |
Mantıksal CPU |
NumGoroutine |
Canlı goroutine |
Version |
Go sürümü |
metrics.Read |
Adlı ölçümler |