首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

想实现一个简单的 Python 提醒喝水的算法

  •  1
     
  •   douglas1997 · 61 天前 · 1065 次点击
    这是一个创建于 61 天前的主题,其中的信息可能已经有所发展或是发生改变。

    设想:

    1. 每天有 8 个在( 8 ~ 22 点)的随机时间点分布在这个时间段不同的小时,e.g. [9, 11, 13, 14, 16, 18, 19, 20]
    2. 然后在这些时间点发送提醒消息
    

    大家觉得怎么实现高效呢?我觉得如果先生成这 8 个时间点,再用一个 while 不断的阻塞 sleep&check 所有时间点很 naive,并且每天都要重复生成也很蠢。如何判断新的一天到来也是一个问题。

    emmm,对这种算法不是很熟。求指教~

    第 1 条附言  ·  61 天前


    我写的 Python3 blocking 版本,尽量降低 datetime.now()的调用次数,删除了部分我的私人化代码。

    Good night ~
    13 回复  |  直到 2019-04-19 10:50:13 +08:00
        1
    douglas1997   61 天前
    大佬都睡了吗 :(
        2
    pual   61 天前 via Android
    操作系统有时钟的 API, 注册时间断并监听
        3
    nodwang   61 天前 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   61 天前
    @pual 嗯看来还是一个离不开系统中断的程序。

    @nodwang naive 版本好写一些。如果没有比较好的回复的话我就 Append 供其他人参考吧。
        5
    nanaw   61 天前 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   61 天前
    at
        7
    xujunfu   61 天前 via Android
    你需要的是闹钟,把精力和思考用在刀刃上吧
        8
    douglas1997   61 天前
    @xujunfu 哈哈哈,是写给女票用的。每天微信提醒她喝水。
        9
    douglas1997   61 天前
    @nanaw 嗯,看来这种任务还是阻塞式的简单,我现在在写一个把每次阻塞时间拉到尽量最长的程序。
        10
    douglas1997   61 天前
    @zouchtssn 不用系统的,因为是随机的。
        11
    geelaw   61 天前 via iPhone
    用 Windows Task Scheduler 就行,自带随机延迟,你只需要写一个发送提醒的程序。
        12
    tcpdump   61 天前
    喝水都需要提醒?
        13
    c4f36e5766583218   61 天前
    多喝热水🌺🐔
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3915 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 17ms · UTC 03:16 · PVG 11:16 · LAX 20:16 · JFK 23:16
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1