コンピュータの発展に伴い、処理する必要のあるデータはますます大きくなり、一部のタスクは完了するまでに長い時間がかかるようになりました。プログラムの効率を向上させるために、多くのプログラマは、プログラムが複数のサブタスクを同時に実行できるようにするマルチスレッド テクノロジに注目し始めています。この記事ではPythonでマルチスレッドを利用する方法を紹介します。
1. マルチスレッドとは何ですか?
プログラミングにおいて、スレッドとは、独立して実行できるプログラム内の最小単位を指します。シングルスレッド プログラムと比較して、マルチスレッド プログラムは複数のタスクを同時に実行できます。つまり、完了する必要のあるタスクが複数ある場合、マルチスレッドを使用してこれらのタスクを異なるスレッドで同時に実行できるため、プログラムに必要な時間を短縮できます。
2. なぜマルチスレッドを使用するのでしょうか?
シングルスレッド プログラムを使用する場合、2 つの長期にわたるタスク A と B を完了したい場合は、それらを順番に実行する必要があります。つまり、タスク A に 10 秒かかる場合、タスク B を実行する前に 10 秒待つ必要があります。これを行うと、プログラムの効率が非常に低くなります。
しかし、マルチスレッド技術を使用してタスク A とタスク B を同時に実行すると、両方に 10 秒かかるとしても、合計時間はわずか 10 秒になります。そうすることで効率が向上するだけでなく、時間の節約にもなります。
3. Python でのマルチスレッド
Python は、スレッド モジュールを使用してマルチスレッドを実装します。スレッド モジュールには、主に次の重要なクラスがあります。
さらに、current_thread()、enumerate() など、マルチスレッド プログラミングをサポートするために使用される関数やメソッドがいくつかあります。
以下では、threading.Thread クラスを使用して実装するマルチスレッドの例を示します。
4. 例
時間のかかるタスクと短いタスクをシミュレートする単純なスレッドを作成します。マルチスレッドの有用性を示すために、2 つのスレッドを使用して両方のタスクを実行します。
まず、スレッド モジュールを導入する必要があります。
import threading
次に、2 つの関数を定義します。1 つは時間のかかるタスクをシミュレートし、もう 1 つはより短いタスクをシミュレートします。これら 2 つの関数は、それぞれ time モジュールの sleep() メソッドを使用して、タスクの実行時間をシミュレートします。
import time def long_task(): print('开始执行一个耗时的任务') time.sleep(5) # 模拟任务执行时间为5秒钟 print('执行完毕') def short_task(): print('开始执行一个较短时间的任务') time.sleep(2) # 模拟任务执行时间为2秒钟 print('执行完毕')
次に、threading.Thread クラスを使用して 2 つのスレッドを作成し、各スレッドが上記の 2 つの関数をそれぞれ実行します。
t1 = threading.Thread(target=long_task) # 创建线程1 t2 = threading.Thread(target=short_task) # 创建线程2 t1.start() # 启动线程1 t2.start() # 启动线程2 t1.join() # 等待线程1运行完毕 t2.join() # 等待线程2运行完毕 print('程序运行结束')
上記のコードでは、threading.Thread クラスを使用して 2 つのスレッド t1 と t2 を作成します。各スレッドは上記で定義した 2 つの関数をタスクとして使用します。このうち、long_task() は長期タスクに使用され、short_task() は短期タスクに使用されます。
メインスレッドでは、start() メソッドを使用して 2 つのスレッドを開始します。 start() メソッドは、スレッドの run() メソッドを呼び出してタスクを実行します。次に、 join() メソッドを使用して、両方のスレッドの実行が終了するのを待ちます。
最後に、プログラムが終了したことを知らせるために「Program End」を出力します。
上記のコードを実行すると、次の出力が表示されます。
开始执行一个耗时的任务 开始执行一个较短时间的任务 执行完毕 执行完毕 程序运行结束
より短いタスクを実行するスレッドが、時間のかかるタスクを実行するスレッドよりも前に終了することがわかります。これは、マルチスレッドによってプログラムの効率が向上することを示しています。
この例は単純ですが、Python を使用してマルチスレッド プログラミングを行う方法を示しています。
5. 概要
この記事では、マルチスレッド プログラミングの概念と利点、および Python がスレッド モジュールを使用してマルチスレッド プログラミングをサポートする方法について紹介しました。サンプル コードは、スレッドの作成方法、スレッド タスクの定義方法、およびスレッドの実行順序の制御方法を示します。
マルチスレッドは、大量のデータを処理したり、時間のかかるタスクを実行する必要がある場合に非常に便利なツールです。この記事が、マルチスレッドの基本概念と Python でのマルチスレッドの使用方法を理解するのに役立つことを願っています。
以上がPython でマルチスレッドを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。