Pythonで「〇時になったら自動でプログラムを進めたい」と考えたことはありませんか?
本記事では、指定した時間に処理を開始するPythonコードを、while
文とif
文を用いて実装する方法をご紹介いたします。
「16時になったら処理を進める」といったシンプルな仕様を、丁寧に解説してまいります。
実現したいことと背景
「特定の時刻になったら、自動的にプログラムを実行させたい」という目的から、Pythonの基本的な文法を活用して試行錯誤を行いました。
なお、schedule()
関数の使用も検討しましたが、定期実行に特化しており、「特定の時刻に1度だけ実行する」といった用途には不向きだと感じたため、今回は採用しておりません。
実装したPythonコード
以下が、指定した時間(例:16時)に処理を進めるためのサンプルコードです。
import datetime
import time
set_time = "16:00:00"
dt = datetime.datetime.now()
time1 = dt.strftime("%H:%M:%S")
print(time1)
while time1 <= set_time:
if time1 == set_time:
print(time1)
print("成功")
break
dt = datetime.datetime.now()
time1 = dt.strftime("%H:%M:%S")
print(time1)
print("失敗")
time.sleep(1)
コードの説明
1行ずつ丁寧に解説いたします。
1〜2行目:モジュールのインポート
import datetime
import time
時刻の取得とウェイト処理のために、datetime
とtime
モジュールを使用します。
3行目:実行したい時刻の設定
set_time = "16:00:00"
この変数に、処理を実行したい時刻を文字列形式で設定します。
4〜6行目:現在時刻の取得と整形
dt = datetime.datetime.now()
time1 = dt.strftime("%H:%M:%S")
print(time1)
現在時刻を取得し、HH:MM:SS
形式に整形して、確認のために一度出力しています。
7〜16行目:ループで時刻を監視
while time1 <= set_time:
if time1 == set_time:
print(time1)
print("成功")
break
dt = datetime.datetime.now()
time1 = dt.strftime("%H:%M:%S")
print(time1)
print("失敗")
time.sleep(1)
while
文は、現在時刻が設定時刻以下である限りループを継続します。if
文で現在時刻が一致したら、「成功」と表示し、break
でループを終了します。- 一致しない場合は、1秒待機(`time.sleep(1))しつつ再チェックします。
この仕組みにより、PCに過剰な負荷をかけず、秒単位で時刻を監視できます。
動作確認用のprint文について
コード中に多数のprint()
文を使用しておりますが、これは開発時に「現在どの状態なのか」を確認するためのものです。
実運用時には、不要であれば削除しても問題ございません。
scheduleモジュールとの違いについて
最初はschedule
ライブラリを利用して「16時になったら実行」といった動作を試みましたが、
このモジュールは**「毎日〇時に実行」など、定期実行には便利な一方で、単発の時刻指定にはやや不向き**でした。
まとめ:Pythonで時刻指定実行は意外と簡単
今回のように、datetime
とtime
モジュール、そして基本的なwhile
とif
文を組み合わせることで、
Pythonで指定した時刻に自動的に処理を開始するプログラムを簡単に構築できます。
私自身、動作確認を重視してprint()
を多用しましたが、皆様の用途に応じて調整していただければと思います。
少しでも参考になりましたら幸いです。