zoukankan      html  css  js  c++  java
  • Go Example--限速

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    	requests := make(chan int, 5)
    	for i := 1; i <= 5; i++ {
    		requests <- i
    	}
    	close(requests)
    	//初始化一个打点器
    	limiter := time.Tick(time.Millisecond * 500)
    
    	for req := range requests {
    		//每500ms读取一次数据,控制for循环的速度
    		<-limiter
    		fmt.Println("request", req, time.Now())
    	}
    
    	burstyLimiter := make(chan time.Time, 3)
    	for i := 0; i < 3; i++ {
    		burstyLimiter <- time.Now()
    	}
    	go func() {
    		for t := range time.Tick(time.Millisecond * 2000) {
    			//单起协程每2000ms往chan里面写入数据
    			burstyLimiter <- t
    		}
    	}()
    	burstyRequests := make(chan int, 5)
    	for i := 1; i <= 5; i++ {
    		burstyRequests <- i
    	}
    	close(burstyRequests)
    	for req := range burstyRequests {
    		//前3个一次执行完成,后面两个每2000ms读取一次数据,控制for循环的速度
    		<-burstyLimiter
    		fmt.Println("request", req, time.Now())
    	}
    }
    
  • 相关阅读:
    Pandas
    numpy常用举例
    scikit-learn 应用
    numpy基本函数
    pytong下安装安装SK-Learn
    python 在机器学习中应用函数
    决策树实战
    KNN 实战
    Java中的stream流的概念解析
    Struts2为什么要使用OGNL
  • 原文地址:https://www.cnblogs.com/promenader/p/9832232.html
Copyright © 2011-2022 走看看