我用树莓派构建了一个通知系统,每两分钟检查一次数据库,如果发现任何新条目,它会发送电子邮件。我有两种工作方式..
Python 脚本在启动时启动并永远运行。它在循环中内置了一个计时器。每两分钟检查一次数据库并发送电子邮件。
设置了一个Python脚本来检查数据库并发送电子邮件。 cron 作业设置为每两分钟运行一次该脚本。
哪个是更好的选择,为什么?
最佳答案
即使您使用sleep
,您的第一个选择也会实现一种忙等待策略
(https://en.wikipedia.org/wiki/Busy_waiting),
此策略比第二个选项(cron 方法)使用更多的 CPU/内存
因为你的内存中会有你的进程足迹
即使它实际上什么也没做。
另一方面,在 cron 方法中,您的进程将仅在执行有用的事件时出现。
想象一下如果你实现这种方法 对于您机器上运行的许多程序, processus 处于等待状态会消耗大量内存, 它还会对操作系统的调度算法产生影响(内存/CPU 使用) 因为队列中有更多进程需要管理。
因此,我绝对推荐 cron/调度方法。
无论如何,无论您是否在 crontab 中添加该条目,您的 cron 守护进程都会在后台运行,所以为什么不添加它呢?
最后但并非最不重要的一点是,想象一下,如果您的忙碌等待进程因任何原因被终止,如果您选择第一个选项,您将需要手动重新启动它,并且可能会丢失一些监视条目。
希望对您有帮助。
关于python - 发送通知、Python 循环/计时器和 cron 作业哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47255981/