python 时间提醒_Linux下基于python的定时提醒工具
Kreminder
定時提醒工具,間隔一段時間之后提醒長時間坐在電腦面前的你休息一下。
開發初衷
對于需要長時間坐在電腦前工作的人來說,適當起來活動活動總是好的。如果長時間坐在電腦前不動,對于個人的健康來說,可能時一場噩夢。有人的可能想著要適當休息下,但一坐下來就忘了時間;有的人可能是明明已經感覺到坐著有些不舒服了,卻沒有毅力起來。我常常跟我的朋友說,我有“坐著”恐懼癥,平時能站著,我絕對不會坐著。因為只要一工作,我就是坐一天,常常是忘了時間起來,即是閑下來時又沒毅力起來了。中午一般是訂外賣,坐著吃完就坐著瞇一會,醒了又繼續工作。想想也是太可怕了。
(ˇˇ)
所以,后來寫了一個腳本,用 notify-send 輸出氣泡作提醒,并設置 crontab 隔一段時間就提醒自己休息一下。這就是該項目創建的初衷。
實現原理
在最初用 notify-send + crontab 基本實現自己想要的功能之后,又發現這樣靈活性太差,而且移植起來麻煩,換了臺電腦又得重新配置。于是打算自己寫一個定時任務,python 則是替代 shell 的好工具。剛開始是直接在 python 中調用 notify-send 命令。后來發現 python 有一個 pynotify 的模塊能實現 notify-send 同樣的功能,于是用 pynotify 改寫。定時就不在用 crontab 了, 直接用個死循環 sleep 就搞定。至此,用 python 的替換就完成了,不在有麻煩的配置,我只要帶著這份代碼到處跑就可以了。
過了一段時間,我發現我中午總是忘了訂飯。于是我想,該給它添加一個功能,讓它在快到中午的時候提醒我訂飯。這個功能則區別于間隔提醒,它是需要在指定的一個時間來提醒你做某事。于是開始更加這個功能,這樣就需要在循環中不停的對比時間,為之前的循環中有 sleep,所以就只能另外起一個線程。我打算用一個配置文件來設置所有需要處理的事物,然后讓腳本一個一個的讀取出來,這樣我要增加一個事項的時候就不用直接改代碼。
寫完之后運行程序,發現過了一會風扇就嗡嗡的轉了起來。資源消耗太大了。這可能跟在循環中需要不斷的獲取當前時間來比較的原因。于是又尋求新的解決方案,最后發現了 Python 有一個定時任務框架 APScheduler (Advanced Python Scheduler)可以完全替代 crontab 的功能。于是由決定用 APScheduler 來改寫程序。
改寫完成之后,在多次測試中發現 pynotify 似乎與 APScheduler 有些不太兼容,有些時候會出錯。搞到最后,決定用 pyqt 來做算了。本來最開始也打算用 pyqt 寫的,覺得要寫界面,麻煩。Pyqt 的 QSystemTrayIcon 可以創建系統托盤,并且也能產生氣泡。想想用 pyqt 寫也好,以后可以在此基礎上擴展更多的功能。
至此,該項目才有了基本的雛形。
使用說明
本程序依賴 apscheduler 和 pyqt4,要運行本程序需自行下載安裝。獲取源代碼之后,執行項目目錄中的 install.sh 即可安裝:
./install
安裝完成之后需修改配置文件:
vi ~/.kreminder/config/kreminder.conf
程序會在每次開機時隨系統啟動。退出可點擊系統托盤處的退出項。
卸載程序只需刪除主目錄下的 .kreminder 目錄即可:
rm -rf ~/.kreminder
本項目會不斷優化完善,并增加新的功能。
Huoty sudohuoty@163.com
2016.01.08
總結
以上是生活随笔為你收集整理的python 时间提醒_Linux下基于python的定时提醒工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读书笔记——WebKit技术内幕 Web
- 下一篇: linux 其他常用命令