Pythonでのスレッド化:Pythonでスレッドを操作する方法を学ぶ



Pythonでのスレッド化に関するこの記事では、スレッドとは何か、そのタイプ、スレッドを開始して可能な限り最良の方法で利用する方法について説明します。

今日、 は、世界中で最も愛されているプログラミング言語の1つです。 1990年代の開始以来、このプログラミング言語をより良くするために日々働いている多くの支持者と愛好家やコーダーを獲得してきました。 Pythonエコシステムに組み込まれている多くの機能の中で、最も際立っているのはスレッドです。したがって、この記事では、Pythonでのスレッド化、その使用方法、およびその長所と短所についてすべて説明します。

この記事では、次のポイントについて説明します。





始めましょう

Pythonでのスレッド化

Pythonのスレッドとは何ですか?

Pythonのスレッドは、個別の実行フローとして簡単に定義できます。これが意味することは、プログラムでは、2つの異なるプロセスが同時に実行されるということです。 Pythonでのスレッド化の興味深い側面の1つは、バージョン3以降、Pythonで複数のスレッドが同時に実行されるのではなく、単に実行されるように見えるという事実です。



2つの異なるプロセスを同時に実行するのは驚くべきことですが、Python 3以降の現在のバージョンは、特定の時点で実行できるのはプロセスのみであるようにコーディングされていることを理解する必要があります。ただし、CPythonで2つ以上のプロセスを同時に実行する必要がある場合は、コードの一部をC、C ++、Javaなどの他の言語でもコーディングしてから、Pythonでマルチスレッドを実行する必要があります。

スクラムマスターの役割と責任pdf

Pythonでのスレッド化の最もよく知られている利点の1つは、設計の明確さを向上させる能力です。

その前に、Pythonでのスレッド化についていくつかのアイデアがあります。スレッドを開始する方法を理解しましょう。



Pythonでスレッドを開始する

Pythonでのスレッドの定義に慣れてきたので、Pythonで独自のスレッドを作成する方法の例を見てみましょう。 Pythonでスレッドを作成するには、以下の例に示すように、最初にスレッドライブラリをインポートしてから、start()を実行するように指示する必要があります。

import logging import threading import time def thread_function(name):logging.info( 'Thread%s:starting'、name)time.sleep(2)logging.info( 'Thread%s:finishing'、name)if __name__ == '__main __':format = '%(asctime)s:%(message)s' logging.basicConfig(format = format、level = logging.INFO、datefmt = '%H:%M:%S')logging.info( 'Main&ampampampnbsp&ampampampnbsp:スレッドを作成する前')x = threading.Thread(target = thread_function、args =(1、))logging.info( 'Main&ampampampnbsp&ampampampnbsp:スレッドを実行する前')x.start()logging.info( 'Main&ampampampnbsp &ampampampnbsp:スレッドが終了するのを待つ ')#x.join()logging.info(' Main&ampampampnbsp&ampampampnbsp:all done ')

出力

出力-Pythonでのスレッド化-Edureka

Pythonでスレッドを実行するときは、実行する必要のある引数のリストを含む関数としてスレッドを渡します。上で共有した例では、Pythonにスレッドthread_function()を実行し、それを引数として1に渡すように指示しています。

上記のプログラムを実行すると、出力は次のようになります。

「Pythonでのスレッド化」に関するこの記事の次のビットでは、デーモンスレッドとは何かを見てみましょう。

c ++配列を昇順でソート

デーモンスレッドとは何ですか?

技術用語では、デーモンは主にバックグラウンドで実行されるプロセスとして定義できます。ただし、Pythonでは、デーモンスレッドには非常に特殊な意味があります。 Pythonでは、デーモンスレッドはプログラムが終了した瞬間にシャットダウンしますが、他のプログラミング言語ではバックグラウンドで実行を継続します。特定のプログラムで、スレッドがデーモンスレッドとしてプログラムされていない場合、インタープリターはその操作が終了するのを待ってから、インタープリターのみをシャットダウンします。

この概念をよりよく理解するには、上記の例を見てください。最後から2番目の行では、プログラムはすべてのタスクを完了した後、数秒間待機します。これは、非デーモンスレッドが操作を終了してからインターフェイスを終了するのを待っているためです。スレッドが操作を終了すると、プログラムは終了するだけです。

次に、上記のプログラムを変更して、コードにデーモンスレッドを挿入するとどうなるかを見てみましょう。

新しいコード:x = threading.Thread(target = thread_function、args =(1、)、daemon = True)

上記のプログラムを変更して実行すると、次のようになります。

これら2つの出力の違いは、最後の行が最新の行から欠落していることです。 thread_function()は、デーモンスレッドを挿入し、最後に到達するとすぐにプログラムを終了したため、完了する機会がありませんでした。

スレッドへの参加

Pythonでスレッドを作成する概念と、デーモンスレッドの概念について学習したので、Pythonでスレッドを結合する方法を見つけましょう。

Pythonでjoin()関数を使用すると、2つの異なるスレッドを結合し、実行が完了するまでもう一方を待つように指示することもできます。この機能は、大きなアプリケーションをコーディングしていて、すべてのプロセスを特定の順序で実行する必要がある場合に便利です。

「Pythonでのスレッド化」に関するこの記事の最後の部分では、動作する複数のスレッドについて説明します。

複数のスレッドでの作業

上記の例では、一度に2つのスレッドを操作する方法について説明しました。しかし、特定の状況で、同時に複数のスレッドを操作する必要がある場合はどうでしょうか。状況をよりよく理解するために、以下の例を見てください。

import logging import threading import time def thread_function(name):logging.info( 'Thread%s:starting'、name)time.sleep(2)logging.info( 'Thread%s:finishing'、name)if __name__ == '__main __':format = '%(asctime)s:%(message)s' logging.basicConfig(format = format、level = logging.INFO、datefmt = '%H:%M:%S')threads = list( )range(3)のインデックスの場合:logging.info( 'Main&ampampampnbsp&ampampampnbsp:create and start thread%d。'、index)x = threading.Thread(target = thread_function、args =(index、))threads.append(x )x.start()for index、thread in enumerate(threads):logging.info( 'Main&ampampampnbsp&ampampampnbsp:before join thread%d。'、index)thread.join()logging.info( 'Main&ampampampnbsp&ampampampnbsp:thread%d完了」、インデックス)

出力

上記のプログラムでは、スレッドライブラリをインポートし、スレッドを開始し、複数のスレッドを作成してから、join()関数を使用してすべてを結合し、特定の順序で実行するという同じ手順に従いました。

上記のプログラムを実行すると、結果は次のようになります。

結論

これは、Pythonの最も便利な機能の1つです。正しい方法で使用することにより、コーディングプロセス全体をはるかに簡単かつ効率的にすることができます。上記の記事から、スレッドの基本を学び、日々のプログラミングで引き続き使用できることを願っています。

ソートc ++の使用方法

だから、これはあなたがこの記事を気に入ってくれたことを願っています。

Pythonとそのさまざまなアプリケーションに関する深い知識を得るには、次のことができます。 24時間年中無休のサポートと生涯アクセスを備えたライブオンライントレーニング用。

質問がありますか?この記事のコメントセクションでそれらに言及してください。折り返しご連絡いたします。