【Python】timeモジュールでsleep関数のタイマー作成

当サイトで紹介する商品・サービス等の外部リンクは、アフィリエイト広告を含む場合があります。
スポンサーリンク
本記事を読むと以下の実行ができます

テキストボックスに数値を入力してStartボタンを押すと、カウントダウンを開始する。

カウントダウン処理

Pythonの開発で時間を使いたい時があるかと思います。

例えば、ループ処理をしているときに時間を一時停止する。指定時間カウントして、時間まで数値を減らすカウントダウン機能など時間のプログラムは使用頻度が高いです。

特に、カウントダウンタイマー(count down timer)は非常に簡単に作成できるので、Pythonを始めたばかりの初心者の方にもおすすめです。

今回は、timeモジュールsleep関数を使ってPythonで、カウントダウンタイマーを制作するコードを紹介します。

また、Tkinterを応用して、ユーザーが入力した秒数を取得して、カウントダウンするコードも紹介します。

本記事は次の人におすすめ
  • Python初学者
  • 簡単なプログラミングができるようになりたい。
  • 「timeモジュールのsleep関数」の使い方を知りたい。
スポンサーリンク

sleep関数を使ったタイマー

初めに、sleep関数のみを使用してカウントが進むコードを紹介します。

本プログラムの稼働には、「GoogleColaboratory」を使用します。

「GoogleColaboratory」は「Python」をインストールして環境を構築する必要がないので、初めて、Pythonを触る人には非常におすすめです。

GoogleColaboratory

Google Colaboratoryは、Googleが提供するクラウドベースのJupyterノートブック環境です。

Google Colaboratoryでは、ブラウザ上でJupyterノートブックを作成・編集し、Pythonなどのプログラムの実行やデータの可視化、機械学習モデルのトレーニングなどを行うことができます。また、NumpypandasMatplotlibなど統計学に役立つライブラリが使えることが特徴です。

timeモジュール

timeモジュールは、Pythonの標準ライブラリの1つで、時間に関連する機能を提供します。主な目的は、時間の計測や操作、待機などを行うことです。

主な機能
  • time()関数: 現在の時刻をエポックからの経過秒数(UNIX時間)で取得します。一般的に時間計測に使用されます。
  • sleep()関数: 指定した秒数だけプログラムを一時停止させます。他の処理を待たせたり、一定の時間間隔を作るために使用されます。
  • ctime()関数: 現在の時刻を文字列として返します。読みやすい形式で時刻を表示したい場合に使用されます。
  • strftime()関数: 時刻を指定したフォーマットの文字列に変換します。年、月、日、時、分、秒などの要素を組み合わせてカスタムの時刻表現を作成できます。
  • gmtime()関数: 現在の時刻をUTC(協定世界時)のタプル形式で取得します。タプルの要素として年、月、日、時、分、秒などが含まれます。
  • localtime()関数: 現在の時刻をローカルタイムゾーンのタプル形式で取得します。

Sleep()関数

sleep関数()は、プログラムを指定された時間だけ一時停止させるために使用される関数です。一時停止することで、プログラムが指定した時間待機することができます。

sleep()関数「sleep()」括弧内に入力した数字の秒数の間、プログラムを停止します。

sleep()関数は時間の単位を秒で指定します。関数が呼び出されると、プログラムの実行は指定した秒数だけ一時停止し、その後に次の処理に進みます。主に、一時停止を行う際に他の処理が実行させるために使用されます。

しかし、秒間は使用しているPC・シェルなどの環境に依存するため、Sleep()関数の精度は正確ではないです。画像では、後述するソースコードでは、5秒のカウントをしますが、GoogleColaboratoryの計測では実行時間は「4秒」です。

マイクロ秒、ナノ秒の精度ではなく、ふわりと時間計測するにはsleep関数はおすすめです。

時間のずれ

※参考ページ:「Pythonのsleep関数の使い方と利用場面を解説

ソースコード

from time import sleep

Time = 5

def Timer(secs):
    for i in range(0,secs):
        print(i)
        sleep(1)
    print('end')
Timer(Time)

Pythonの学習進め方

Pythonでできることは多岐に渡ります。

Pythonでできること
  • 機械学習・人工知能
  • データ解析・統計分析
  • ファイル操作・システム管理
  • GUIアプリ開発

Pythonは強力で柔軟なプログラミング言語ですが、常に情報がアップデートされるので、
新しいライブラリやフレームワークを独学で学び続けることは困難です。

Udemyは動画で目的に応じた講座を受講できるのでレベルを合わせて学習できます。
購入した講座は再生・停止・スキップなどが可能なオンデマンド形式なので、
専門的な内容を自分のペースで独学できます。

Udemyの特徴
  • プロのエンジニアによる講習が受けられる
  • 自分のペースで学習を進められる
  • オンデマンド形式だから何度でも視聴可能
  • 不満足なコースは視聴していても返金可能返金ポリシー

Pythonでデータサイエンスや人工知能、GUIを学びたい人はUdemy学習を取り入れましょう。
数多くある講座の中から特におすすめな講座を5つ紹介します。

Pythonをインストールから環境設定、基本文法が学習できる。さらに、モジュールの使い方やファイル操作の他に暗号化、並列化、インフラ自動化、キューイングシステム、非同期処理についても学べます。

Pythonの基礎を押さえつつ、人口知能やニューラルネットワーク、機械学習を取り扱う。機械学習ライブラリで文字認識や株価分析などを行う。

データサイエンティストになるために必要なツールについて学ぶことができる。統計分析、NumpyやPandasなどを使ったPythonのプログラミング、機械学習の実装、ディープラーニングの実装を学習できる。

PythonでGUIを作成する方法を取り扱う。Tkinterの発展的な操作まで学習できる。翻訳アプリ、家計簿アプリ、電卓アプリ、音楽再生アプリなど作成して、exeファイル化する。

解説

初めに、sleep関数を使用する場合は、timeモジュールを使う必要があり、以下のコードを書きます。

from time import sleep

続いて、計測する時間を定義します。ソースコード内では、「Time」としています。

Time = 5

ここで、def関数を定義します。
for文を使用して、0からsecs、つまり5まで数字を刻みます。sleep関数で1秒間プログラムを停止を繰り返します。
そして、printで最後は終了を知らせます。

引数は秒で取ることを覚えておいてください。

def Timer(secs):
    for i in range(0,secs):
        print(i)
        sleep(1)
    print('end')
Timer(Time)
引数とは

引数(ひきすう)は、プログラムや関数に渡す値のことを指します。関数や手続き(サブルーチン)が実行される際に、外部から渡されるデータや情報です。

一般的に、関数は特定の処理を行い、その結果として値を返すことがあります。この処理を行うために必要な情報やデータは、関数の引数として渡されます。関数は引数を受け取り、その引数を元に処理を行い、結果を返すことができます。

引数は、関数を呼び出す際に渡されるため、関数の動作や結果に影響を与えることができます。引数の数や型、順序などを適切に指定することで、関数に必要なデータを正確に渡すことができます。

def add_numbers(a, b):
    result = a + b
    return result

sum1 = add_numbers(3, 5)
print(sum1)  # 結果(8が出力)

sum2 = add_numbers(3, 3)
print(sum2)  # 結果(6が出力)

def関数で変数「result」をa,bの和として定義します。
sum1は、3+5の結果(=8)、sum2は、3+3の結果(=6)が出力されます。

先ほどは、カウントを増やしてきましたが、以下のようにコードを書き替えると、カウントダウンになります。

#for i in range(0,secs):から変更
for i in range(secs,-1,-1):

入力した秒数をカウントダウンするタイマー

sleep関数の使用を確認しましたので、ここからは、入力した数字のカウントダウンタイマーを制作していきます。テキストボックスに数字入力して、カウントダウンをしますので、「Tkinter」を使用します。

本プログラムで使用するTkinterは、Google Colaboratoryで稼働しないので、VScodeやコマンドプロンプトのようなシェルで実行してください。

作成したコードをexe化する方法を紹介しています。あわせてご覧ください。

ソースコード

import tkinter 
from time import sleep

#画面作り
root = tkinter.Tk()
root.geometry('300x150')
root.title('Timer')

#ラベル
lbl = tkinter.Label(text ='時間【s】入力')
lbl.place(x=30,y=70)

#テキストBOX
txt = tkinter.Entry(width=20)
txt.place(x=100,y=70)

#ボタン
def btnstart():
    i = txt.get()
    s = int(i)
    txt.delete(0, tkinter.END)
    def Timer(secs):
        for s in range(secs,-1,-1):
            print(s)
            sleep(1)
        print('end')
    Timer(s)

btnstart = tkinter.Button(root,text='Start',command=btnstart)
btnstart.pack()
btnstart.place(x=220,y=70)

root.mainloop()

解説

初めに、tkinterとtime、2つのモジュールを追加(import)します。

import tkinter
from time import sleep

続いて、Tkinterの画面と、ラベル、テキストBOXを作成します。

#画面作り
root = tkinter.Tk()
root.geometry('300x150')
root.title('Timer')

#ラベル
lbl = tkinter.Label(text ='時間【s】入力')
lbl.place(x=30,y=70)

#テキストBOX
txt = tkinter.Entry(width=20)
txt.place(x=100,y=70)

ここで、def関数でボタンを作成します。ボタンを押すと、iにテキストを代入し、sにint型変数iを代入します。

「txt.delete(0, tkinter.END)」で、取得後テキストボックスから数字を消します。

for文は先ほどと同じで、取得した値をsleep関数で1秒間プログラムを停止を繰り返して、カウントダウンします。

#ボタン
def btnstart():
    i = txt.get()
    s = int(i)
    txt.delete(0, tkinter.END)
    def Timer(secs):
        for s in range(secs,-1,-1):
            print(s)
            sleep(1)
        print('end')
    Timer(s)

btnstart = tkinter.Button(root,text='Start',command=btnstart)
btnstart.pack()
btnstart.place(x=220,y=70)

動作確認

冒頭で紹介しましたように、テキストボックスに数字を入力して、ボタンを押すと、カウントダウンが始まります。

処理を終えると、テキストボックスから数字が消えて次の入力が可能になります。

まとめ

今回はPythonでtimeモジュールのsleep関数を使って、カウントダウンタイマーを作成しました。

sleep関数は、カッコ内に入力した数字の秒数の間、プログラムを停止する関数です。

秒間は使用しているPC・シェルなどの環境に依存するため、Sleep関数の精度は荒いです。
マイクロ秒、ナノ秒の精度ではなく、ふわりと時間計測するにはsleep関数はおすすめです。

また、Tkinterを使用すれば、入力した秒数をカウントダウンするタイマーの作成も可能になります。

この記事を書いた人

プロフィール

アリッシア

                 

大学4年間で何か胸を張れるスキルを身に着けたくて当サイト運営を始めました。
現在、大学院に進学するか就職するか迷いながら勉強しています。
詳しいプロフィールはこちら

Contact icon

contact

X icon

X

Instagram icon

Instagram

Note icon

Note

スポンサーリンク
Python
フォローする
タイトルとURLをコピーしました