gpt4 book ai didi

go - 将整个函数放在一个带有 time.Sleep 的无限循环中还是循环一个 go routine 效率更高?

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:37 25 4
gpt4 key购买 nike

我有一个函数,我想每 20 秒左右轮询一次,现在它在 go 例程中被调用,如下所示:

转到 StartTradeBot()

然后在函数体中:

func StartTradeBot() {
for {
// All the stuff to do
time.Sleep(20 * time.Second)
}
}

这样效率更高吗?

或者我应该像这样包装我的 goroutine

for {
go StartTradeBot()
time.Sleep(20 * time.Second)
}

最佳答案

关于如何做到这一点,至少有三种变体,每种都有不同的功能。因为间隔是 20 秒,所以性能上的差异可以忽略不计。选择最能满足应用程序功能要求的变体。

选项 1:每次操作之间暂停 20 秒。

for {
// Do stuff
time.Sleep(20 * time.Second)
}

选项 2:每 20 秒开始一个操作,即使之前的操作仍在执行。

for {
go func() {
// Do stuff
}()
time.Sleep(20 * time.Second)
}

选项 3:每 20 秒或在上一个操作完成后开始操作,以较晚者为准。

t := time.NewTicker(20 * time.Second)
for range t.C {
// Do stuff
}

关于go - 将整个函数放在一个带有 time.Sleep 的无限循环中还是循环一个 go routine 效率更高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32283403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com