可以用死循环的方式做定时任务吗?
用这种方式做定时任务可以吗,就是一个死循环:
package main
import "time"
import "os/exec"
func main() {
for i := 0; i < 10; i = 1 {
a := time.Now().Hour()
if a >= 0 && a <= 1 {
exec.Command("shutdown", "-s", "-t", "0").Start()
} else {
time.Sleep(300 * time.Second)
}
}
}
或者这样,也是一个死循环
import os
import time
time_h=int(time.strftime("%H"))
for i in range(10):
if (time_h>=0 and time_h<=1):
os.system("shutdown -s -t 0")
else:
time.sleep(300)
i=1
这种是一个递归函数,会不会爆栈
import time
import os
time_h=int(time.strftime("%H"))
def shutdown():
if (time_h<=1 and time_h>=0):
os.system("shutdown -s -t 0")
else:
time.sleep(300)
shutdown()
shutdown()
一般执行定时任务都用什么方法,windows的可以添加计划任务,Unix有Cron,但是自己实现该怎么做?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这样写到不是不可以
可以用定时器,定时器每隔一段时间查询系统时间,判断是否该执行相应的任务。
建议使用setInterval函数,自己写的函数没有经过严格测试,对于上线项目可能存在bug,但是官方提供函数毕竟是经过严格测试的,安全性比较好。