Python のデーモンスレッド
![Python のデーモンスレッド](/img/Python/ag-feature-image---daemon-threads-in-python.webp)
スレッドは処理される命令の小さなシーケンスであり、効率を上げるために異なるスレッドを同時に実行することができます。デーモンスレッドと非デーモンスレッドがあります。
このチュートリアルでは、Python のデーモンスレッドについて説明します。
Python で daemon
パラメータを設定してデーモンスレッドを作成する
非デーモンスレッドとメインスレッドをサポートするスレッドは、デーモンスレッドと呼ばれます。メインスレッドの終了をブロックしません。非デーモンスレッドもメインスレッドの実行後に実行される可能性がありますが、デーモンスレッドはメインスレッドで実行を停止します。
これが、デーモンスレッドがメインスレッドと非デーモンスレッドの優れたサポートとして機能する理由です。デーモンスレッドを使用して、プロセスが完了したかどうかに関係なく、メインプログラムが終了すると停止するガベージコレクションなどの基本的な機能を実行します。
デーモンスレッドを作成するには、threading.Thread()
関数の daemon
パラメーターを True
に設定します。
例えば:
import threading
import time
def thread_x():
print("Start ", threading.currentThread().name)
time.sleep(5)
print("Finish ", threading.currentThread().name)
def thread_y():
print("Start ", threading.currentThread().name)
print("Finish ", threading.currentThread().name)
x = threading.Thread(target=thread_x, name="Thread-X", daemon=True)
y = threading.Thread(target=thread_y, name="Thread-Y")
x.start()
y.start()
出力:
Start Thread-X
Start Thread-Y
Finish Thread-Y
この例では、デーモンスレッドであるスレッド x
が、非デーモンスレッド y
の実行を停止してプログラムが終了すると、実行を停止することがわかります。
Python で setDaemon()
関数を使用してスレッドをデーモンスレッドに変更する
setDaemon()
関数を使用してスレッドを変更し、デーモンスレッドにすることもできます。この関数のパラメーターとして True
を渡す必要があります。
スレッドがデーモンスレッドの場合、isDaemon()
関数は True
を返します。それ以外の場合は、false
を返します。
次の例では、これらのメソッドを使用します。
import threading
import time
def thread_x():
print("Start ", threading.currentThread().name)
time.sleep(5)
print("Finish ", threading.currentThread().name)
def thread_y():
print("Start ", threading.currentThread().name)
print("Finish ", threading.currentThread().name)
x = threading.Thread(target=thread_x, name="Thread-X")
y = threading.Thread(target=thread_y, name="Thread-Y")
x.setDaemon(True)
print(x.isDaemon())
print(y.isDaemon())
x.start()
y.start()
出力:
True
False
Start Thread-X
Start Thread-Y
Finish Thread-Y
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn