Pythonで指定時刻に処理を実行する方法【初心者向け解説】

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

時刻の取得とウェイト処理のために、datetimetimeモジュールを使用します。

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で時刻指定実行は意外と簡単

今回のように、datetimetimeモジュール、そして基本的なwhileif文を組み合わせることで、
Pythonで指定した時刻に自動的に処理を開始するプログラムを簡単に構築できます。

私自身、動作確認を重視してprint()を多用しましたが、皆様の用途に応じて調整していただければと思います。

少しでも参考になりましたら幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次