您好,欢迎来到九壹网。
搜索
您的当前位置:首页golang频率rate详解

golang频率rate详解

来源:九壹网
golang频率rate详解

golang.org/x/time/rate 提对速度进⾏的算法

l := rate.NewLimiter(1, 3) // ⼀个参数为每秒发⽣多少次事件,第⼆个参数是最⼤可运⾏多少个事件(burst)Limter提供三中主要的函数 Allow, Reserve, Wait. ⼤部分时候使⽤WaitWait/WaitN 当没有可⽤事件时,将阻塞等待

c, _ := context.WithCancel(context.TODO())for {

l.Wait(c)

fmt.Println(time.Now().Format(\"04:05.000\"))}

输出

07:35.05507:35.05507:35.05507:36.06007:37.05907:38.059

缓存3次后,每秒执⾏⼀次

Allow/AllowN 当没有可⽤事件时,返回falsefor {

if (l.AllowN(time.Now(), 1)) {

fmt.Println(time.Now().Format(\"04:05.000\")) } else {

time.Sleep(1 * time.Second / 10)

fmt.Println(time.Now().Format(\"Second 04:05.000\")) }}

Reserve/ReserveN 当没有可⽤事件时,返回 Reservation,和要等待多久才能获得⾜够的事件

for {

r := l.ReserveN(time.Now(), 1) s := r.Delay() time.Sleep(s)

fmt.Println(s, time.Now().Format(\"04:05.000\")) }

补充:关于golang.org/x包问题

由于⾕歌被墙,跟⾕歌相关的模块⽆法通过go get来下载

解决⽅法:

ln -s $GOPATH/src/github.com/golang $GOPATH/src/golang.org/x

如果是Windows下,最后⼀条可以替换为mklink命令,或者直接拷贝⽂件夹修改⼀下名称即可。go的官⽅包都在这个⽬录下:

以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。如有错误或未考虑完全的地⽅,望不吝赐教。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务