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