スライドショー

【Python入門】sleep関数の3つの便利な使い方

  • APIの制限があるからこの処理は1秒待ってから行わせたい
  • 段階的に結果を出したいので処理ごとに一時的に止めたい


のように考えたことがあるのではないでしょうか。

今回はこのような処理をPythonのtimeモジュールsleep関数を使って実装する方法を紹介していきます。

また、ミリ秒単位で使う方法や、繰り返しの中で使う方法も解説していきます。

sleep関数の基本的な使い方

sleepの基本

まずはsleepをプログラムの中で使えるようにimportしましょう。今回はsleepのみを使うので、timeモジュールからsleep関数のみをimportします。

from time import sleep

これでtimeモジュールの中からsleep関数のみをimportする事ができました。この方法でimportすると、sleep以外のtime内の関数にアクセスできなくなるので注意してください。

実際に確認してみましょう。

Jupyter lab上で試してみます。

In:

from time import sleep 
print(sleep) 
print(time) 
print(time.time)
print(time.sleep)

Out:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-7fc2c0ba51f4> in <module>
      1 from time import sleep
      2 print(sleep)
----> 3 print(time)
      4 print(time.time)
      5 print(time.sleep)

NameError: name 'time' is not defined

このように、from [module] import hoge を使うと、importしたhogeのみ使えるようになり、それ以外のものにはアクセスできません。このような方法でimportすると

  • 明示的に何を読み込んだのか分かる様になる
  • 毎回time.sleepのようにモジュール名から書く必要がなくなる


点において便利です。では実際にsleep関数の使い方を確認していきましょう。

sleep(secs)は引数として秒数を受け取ります。引数secsはint型でもfloat型でも構いません。

print("begin")
sleep(1)
print("end")

これでbeginからendの間に1秒間の間を開ける事ができました。ただし注意点としては、当然ですがマイナスの秒数を受け取ることはできません。

sleep(-0.1)

# 実行結果
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-4-4977669c6d9f> in <module>
----> 1 sleep(-0.1)

ValueError: sleep length must be non-negative

必ずプラスの数を引数に与えることにだけ注意してください。

sleepをミリ秒で使う

次に、sleep関数を使ってミリ秒(1/1000秒)単位で処理を止めてみましょう。

print("begin")
sleep(0.001)
print("end")

0.001秒ストップのテスト

これでbeginからendの間に0.001秒間の間を開ける事ができました。このように、sleep関数の使い方はとても簡単です。

sleep関数の応用的な使い方

では、応用としてループ処理の中でsleep関数を使う方法を紹介します。ここでは、forループの中で別の関数を呼び出し、ループごとに0.5秒sleepさせる処理を考えます。

簡単のため、呼び出す関数は「ループ回数をprintするだけの関数」とします。

実際に使うときは、「単位時間ごとにリクエスト制限があるapiを叩く関数」や「段階的にwebページの要素を表示していく関数」などが対象になるかと思います。

では実際に見てみましょう。

def stub(i):
    print("{}回目の処理です。".format(i))

max_iter = 5
secs = 0.5
for i in range(max_iter):
    sleep(secs)
    stub(i)

loopでsleepを使う

1~2行目で呼び出される関数を定義しています。stubという名前の関数で、引数iを受け取ります。

print関数は引数として与えられたものをコンソールに出力しますが、文字列型のメソッドの.format()を使っていることに注意してください。

これはこのメソッドを呼び出した文字列内の{}という表記に、.fortmat()の引数として渡されたobjectを代入する操作を行います。4~5行目はループ回数とsleepする秒数を定義しています。

6行目からはループ処理に入ります。このループの中でsleep関数を呼び出してからstub関数を呼び出しています。

これがループ処理内でsleep関数を使う例になります。

このままPythonを学び続けて大丈夫?

なぜPythonを学ぶのか?

あなたがPythonを学ぶ理由は何でしょうか?

  • Pythonが人気だからとりあえず学んでいる
  • AIや機械学習の分野に興味があるから

Pythonは初心者向けの言語と言われています。その理由としてシンプルでわかりやすい構文や、実用的なライブラリが豊富なことが挙げられ、実際に学びやすい言語です。

しかし、もしあなたが機械学習に興味があって、とくに知識も無いまま学習を進めると、挫折する可能性が高いと言えます。

機械学習の分野はプログラミング以外にも、専門的な知識や数学の知識も必要になります。ただなんとなく学習していると早い段階でつまづきやすく、そのまま挫折してしまうなんてことも…。

そのため、挫折しないためには、

  • 最適な学習環境を用意する
  • 必要なライブラリ・ツールを導入する
  • わからないことを質問できるメンターを見つける

などが必要になります。

効率よく学びたいなら、無料体験レッスンがおすすめ

このままPythonを学び続けていいのかな…
まだまだ知りたいことがたくさんある!
もっと詳しくPythonについて知りたい!

といった悩みや願望を持っている方は、弊社「侍エンジニア塾」をご利用下さい。

侍エンジニア塾では、

  • 現役エンジニアによるマンツーマンレッスン
  • キャリアアドバイザーによる転職・就職支援
  • 業界屈指のフリーランス・起業サポート

を受けることができます。

業界屈指のコンサルタントから、効率的な学習方法や仕事獲得術、今後のキャリアまでさまざまな疑問を相談してみませんか?遠方の方でもオンラインで受講できます!お気軽に受講下さい。

侍エンジニア塾
無料体験レッスンを受ける

まとめ

今回はtime.sleepの使い方を紹介しました。

sleep関数はプログラム中で何秒か処理をストップさせたいときなどに便利ですね。簡単ですぐ使いこなせる機能なので、ぜひ活用してください。

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

フクロウ

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。