Go中如何每秒重复N次函数?
我可以:
N := 30 //Repeat 30 times per second
for {
//Do something
time.Sleep(time.Second * time.Duration(N))
}
但这只是使重复之间的间隔
最佳答案
有两个选项,都不能保证每秒 x 次。
- 将 N 设置为
1/30
而不是30
。因此 sleep 时间为 1/30 秒。 - 有一个循环 30 次并执行你的“做某事”的内部 for 循环,然后在退出时你点击休眠一秒钟的语句。
选项一:
N := 30 //Repeat 30 times per second
for {
//Do something
time.Sleep(time.Duration(1e9 / N)) //time.second constant unnecessary (see kostya comments)
}
选项二:
N := 1 //Sleep duration of one second
for {
for i := 1; i<=30; i++ {
//Do something
}
time.Sleep(time.Second * time.Duration(N))
}
请注意,在选项二中,所有事情都同时发生,然后您稍等片刻。第一个选项将隔开第二个选项。由于计算机的计时,这并不精确: sleep 不能保证它会在您期望的时候准确地醒来。
关于go - 如何每秒重复函数N次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31323118/