
设想:
1. 每天有 8 个在( 8 ~ 22 点)的随机时间点分布在这个时间段不同的小时,e.g. [9, 11, 13, 14, 16, 18, 19, 20] 2. 然后在这些时间点发送提醒消息 大家觉得怎么实现高效呢?我觉得如果先生成这 8 个时间点,再用一个 while 不断的阻塞 sleep&check 所有时间点很 naive,并且每天都要重复生成也很蠢。如何判断新的一天到来也是一个问题。
emmm,对这种算法不是很熟。求指教~
1 douglas1997 OP 大佬都睡了吗 :( |
2 pual 2019 年 4 月 19 日 via Android 操作系统有时钟的 API, 注册时间断并监听 |
3 nodwang 2019 年 4 月 19 日 via Android 我自己用 go 写了一个,就是你说的 naive 版本, 流程是: 1,开机启动,初始化 40 天查询是否工作日,存到 sqlite。 2,初始化一次当天和第 40+天,检查当天是否工作日,非工作日 sleep 1 小时,直到当天结束。 3,工作日:sleep 30 分钟 & check 时间是否在 9-12,13-18 之内 ,如果是 提醒 然后 sleep。 4,goto 2。 上面数字 30,40,9,12,13,18 都是启动时 flag 参数控制 ,初始化时顺便 抓了 bing 每日壁纸,windows 锁屏壁纸,新手 go 练手美滋滋 |
4 douglas1997 OP |
5 nanaw 2019 年 4 月 19 日 via Android 每 2 小时无需获取时间: x=y=0 while 1: x=y;y=randint(1,60);sleep(60*60*2-120*x+120*y) #action 定时任务 每天 7 点执行 分布不均匀的话再加 if |
6 zouchtssn 2019 年 4 月 19 日 at |
7 xujunfu 2019 年 4 月 19 日 via Android 你需要的是闹钟,把精力和思考用在刀刃上吧 |
8 douglas1997 OP @xujunfu 哈哈哈,是写给女票用的。每天微信提醒她喝水。 |
9 douglas1997 OP @nanaw 嗯,看来这种任务还是阻塞式的简单,我现在在写一个把每次阻塞时间拉到尽量最长的程序。 |
10 douglas1997 OP @zouchtssn 不用系统的,因为是随机的。 |
11 geelaw 2019 年 4 月 19 日 via iPhone 用 Windows Task Scheduler 就行,自带随机延迟,你只需要写一个发送提醒的程序。 |
12 tcpdump 2019 年 4 月 19 日 喝水都需要提醒? |
13 c4f36e5766583218 2019 年 4 月 19 日 多喝热水 |
14 AllenHua 2020 年 9 月 1 日 最近刚好关注到这方面 哈哈哈 看到 12l 的 喝水都要提醒 瞬间笑了 |