2017-04-11 18 views
0

特定の時間に機能を実行するラズベリーパイのスタンドアロンプ​​ログラムを作成しようとしています。私はいくつかの研究を行い、すべてがcrontabの使用を指しているようです。私は理想的には、私は後でプログラムを共有することができ、自分のcrontabを編集するように頼みたいので、crontabを使用するのが好きではないだろう少し侵襲的です。Pythonでスケジュールされたタスクを実行しています

プログラムは、スケジュールされたタスク(毎日特定の時間に実行)、一定のタスク(データを収集して3秒ごとにLCDに表示するループ)、および間隔でタスクを実行する(15分ごとに特定の機能を実行する) )。

私の質問は、これを達成する最も効果的な方法は何でしょうか?私の最初の考えは、実行するものを決定するためにtheTimeタプルとif文を調べる関数を作成することですが、初心者であっても、それは非常にぎこちなく聞こえます。 'schedule'パッケージは有望だと思われますが、スケジュールされたタスクを常に実行中のループのバックグラウンドでどのように統合するのかはわかりません。誰もがこのようなプログラムを作る経験を持っていて、おそらく彼らのために働いているコードのいくつかの例がありますか?

+0

私は、ワーカースレッド(すなわちスケジュール)、バックグラウンドプロセス、セロリを提案します。必要に応じてその順序で。 – dhke

答えて

0

チェック最近の議論

How do I get a Cron like scheduler in Python?

、、。私自身の経験では、家庭用のライブラリや拡張機能は夏時間の問題を抱えています。私はパフォーマンスが問題になるかもしれないと思っています。新しいスケジューリングツールにはパフォーマンスやその他の制限があることが多いのですが、cronは古くから、テストされています。興味深い記事http://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time

0

あなたが探している魔法の言葉は「サービス」です。これらは、オペレーティングシステムが起動時などに起動し、定期的にチェックし、必要に応じて再起動する長期実行プロセスです。

私はラズベリーパイの場合は行っていませんが、これは有望に見えます。これはあなたのpythonスクリプトが/root/mouse.pyにあると仮定します。

まず、例えば、/lib/systemd/system/mouselogger.service、中にサービス定義を作成します。

[Unit] 
Description=Mouse Logging Service 

[Service] 
ExecStart=/root/mouse.py 
StandardOutput=null 

[Install] 
WantedBy=multi-user.target 
Alias=mouselogger.service 

次に、とコンソール上で有効にします。あなたのスクリプトは、その後例えば、それ自身の睡眠を管理する必要があり

sudo systemctl enable mouselogger.service 
sudo systemctl start mouselogger.service 

from time import sleep 
while True: 
    sleep(2) 
    print("hello!") 

もう1つ、おそらくもっと簡単なオプションは、後でcrontabを使用することですすべて:単純に毎分スクリプトを実行します。十分細かい場合は10分ごとに実行し、その時点では何もしない場合は何もせずに終了します。素敵なウェブページを持っているhttps://apscheduler.readthedocs.io注目すべきいくつかの他の例について

関連する問題