Pythonのasyncio(非同期)を理解する

スポンサーリンク

Pythonのasyncioを理解することについて解説しています。

Pythonのasyncioは、スレッドを使わずにPythonのコードを並行に書くための構造を提供する、コルーチンベースの並行処理モデルで、スレッドやマルチプロセッシングよりも軽量です。なお、コルーチンとは、処理を中断した後、続きから処理を再開できるプログラミングの構造の一種で、「asyncio」を直訳すると「非同期」という意味になる。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■実際にasyncio プログラムを作成する

では、Pythonのasyncioを理解するために、実際にasyncio プログラムを作成してみます。

■コード

import asyncio, time 


async def test_code(): 
    print(time.ctime()) 
    await asyncio.sleep(1.0) 
    print(time.ctime()) 


asyncio.run(test_code())

今回のプログラムは、importでasyncioモジュールとtimeモジュールを呼び出します。その後、async defを用いて、test_code()という関数をコルーチンとして定義します。定義されたtest_code()が呼び出された時に実行される処理としては、time.ctime()を用いて現在の時刻を取得し、取得された時刻をprint()を用いて出力させるというものになります。そして、time.ctime()を用いる間で、await(待機)とasyncio.sleep()を用います。asyncio.sleep()は、asyncioモジュールによって提供されるコルーチンで、await(待機)を一緒に用いると、イベントループの制御を与えます。今回asyncio.sleep()の括弧内では、引数,パラメータとして「1.0」という値を渡し、1.0秒だけ遅延させます。

最後にasyncio.run()を用います。括弧内には引数,パラメータとして、test_code()というコルーチンを渡します。これでtest_code()が実行し、結果を返します。

■実行・検証

このプログラムを「async_test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、今回定義したtest_code()という関数、コルーチンが実行され、1.0秒だけ遅延し、time.ctime()で現在の時刻を取得し、取得した時刻をprint()で出力させることができました。

コメント

タイトルとURLをコピーしました