Pythonでずっと繰り返すには?ループ文を使った無限ループ処理
- 作成日: 2023-06-30
- 更新日: 2023-12-25
- カテゴリ: Python
Pythonでずっと繰り返す
Pythonでずっと繰り返して処理をする場合はどうしたらいいのでしょうか?
そういう場合は無限ループを使うのが一般的です。
この記事ではPythonでずっと繰り返して処理をする方法を解説します。
関連記事
Djangoでオブジェクトを一括作成・更新【bulk_create, bulk_update】
DjangoのModel.objects.filter()の使い方【QuerySet】
Djangoのmodelのcreate()の使い方【Python】
Django入門: ルートの設定 ~ 簡単な一行掲示板アプリを作る その4【Windows10】
NumPyのappend()の使い方: 配列の末尾に要素を追加
Numpyのarangeの使い方: 指定範囲の数列を生成する
Python3でYoutube Data APIを使ってキーワード検索する
PythonからC言語(my.puts)を呼び出して実行する
無限ループを使う
無限ループとは終わりのないループのことを言います。
実行すると無限にループが回ります。
例えば以下のようなコードを書きます。
while True:
try:
print('Hello')
except KeyboardInterrupt:
break
while True:
でwhile文の無限ループに入ります。
print('Hello')
で画面に「Hello」と出力しています。
無限ループの最中にCtrl + C
などが押された場合はKeyboardInterrupt
例外が創出されます。
ですのでそれを検出したら無限ループからbreak
します。
このコードを実行すると画面にずっと「Hello」と出力されていくので終了したい場合はCtrl + C
を入力してください。
ずっと繰り返し処理の応用
ずっと繰り返す処理の応用としては色々考えられます。
よくあるのは無限ループを書いてユーザーから入力を待ち受け、その入力に合わせて処理を分岐する方法です。
while True:
try:
text = input('input > ')
if text == 'hello':
print('Hello, World!')
else:
print('(^_^)')
except KeyboardInterrupt:
break
上記の場合はinput('input > ')
で入力待ちになります。
ユーザーが入力したテキストはtext
に入りますので、このtext
をif文で分岐します。
text
がhello
なら「Hello, World!」と出力し、それ以外は顔文字を出力します。
ゲームループを回す
ずっと繰り返す処理と言えばゲームなどが挙げられます。
ゲームは電源が切れるまでソフトウェアをずっと起動しておくタイプのソフトウェアです。
こういったソフトウェアでは無限ループが使われます。
import time
def update():
return True
def draw():
print('Hello')
try:
while update():
draw()
time.sleep(0.1)
except KeyboardInterrupt:
pass
上記のコードではupdate()
でゲームの更新ロジックを書き、draw()
でゲームの描画を行います。
while文でupdate()
を無限に呼び出し、同時にdraw()
も呼び出します。
このような設計はゲームシステムの設計では一般的な設計と言えます。
マルチスレッドでずっと繰り返す
マルチスレッド処理でずっと繰り返す例を紹介します。
マルチスレッドとは並行処理のことです。
アプリケーションは起動するとLinuxではプロセスという単位が作られます。
そしてプロセスの中にはメインスレッドがあります。
マルチスレッドはこのメインスレッドの他に別にスレッドを作り、そのスレッドに並行処理をさせることを言います。
from threading import Thread
import time
def worker():
while True:
print('Hello')
time.sleep(0.1)
thread = Thread(target=worker)
thread.start()
thread.join()
上記のコードではマルチスレッドでworker()
という関数を起動しています。
Pythonでマルチスレッドを行うにはthreading
のThread
クラスを使います。
Thread(target=worker)
でスレッドで起動する関数を指定します。
そしてthread.start()
でスレッドをスタートし、thread.join()
でスレッドの終了を待機します。
worker()
では無限ループが回りprint('Hello')
で画面に「Hello」と出力されます。
time.sleep(0.1)
で100ミリ秒スリープを入れています。
async/awaitでずっと繰り返す
async/await
でずっと繰り返すには以下のようなコードを書きます。
import asyncio
async def worker():
while True:
try:
print('Hello')
asyncio.sleep(0.1)
except KeyboardInterrupt:
break
async def main():
await worker()
asyncio.run(main())
async/await
は同期的に処理を行うための仕組みです。
async
が書かれた関数内ではawait
式が使えます。
await
式は他のasync
関数などを実行し完了するまで待機します。
上記のコードではworker()
で無限ループを回し、それの終了をmain()
内で待機しています。
おわりに
今回はPythonでずっと繰り返す処理を解説しました。
色々繰り返し方がありますね。
🦝 < 無限ループ!
🦝 < とまらない!