このクラスは個別のスレッド中で実行される活動を表わします。 その活動を決定する方法は2つあり、呼出し可能オブジェクトをコンストラクタへ渡す、 またはサブクラスでrun()メソッドをオーバーライドするということです。 他のメソッド(コンストラクタを除く)はサブクラスでオーバーライドしては なりません。 言いかえれば、このクラスの__init__()とrun()メソッド だけをオーバーライドしてください。
いったんスレッドオブジェクトが作成されれば、その活動をスレッドの start()メソッドを呼ぶことによりスタートさせなければなりません。 これは、それぞれのスレッドのrun()メソッドを起動します。
スレッドの活動が始まると、そのスレッドは'生きていて(alive)' そして'活動している(active)'と考えられます (これらの概念は、ほとんど同じであるが、しかし全く同じではない; それらの定義は故意に多少曖昧になっています)。 それは run()メソッドが終了した時に、 またはunhandled例外が送出された時に、生きること活動することをやめます。 スレッドが生きていてもisAlive()メソッドはテストします。
他のスレッドはスレッドのjoin()メソッドを呼ぶことができます。 join()メソッドを呼ばれたスレッドが終了するまで、 呼出しスレッドをブロックします。
スレッドは名前を持っています。 その名前はコンストラクタへ渡すことができ、 setName()メソッドでセットし、 getName()メソッドで得ることができます。
スレッドは``デーモンスレッド''としてフラグすることができます。 このフラグの意味は、デーモンスレッドだけが残されたとき、 Pythonプログラム全体が終了するということです。 初期値は作成するスレッドから継承されます。 そのフラグはsetDaemon()メソッドでセットされ、 isDaemon()メソッドで得ることができます。
``メインスレッド''オブジェクトがあります。 これはPythonプログラムの最初のスレッドに相当します。 それはデーモンスレッドではありません。
``ダミースレッドオブジェクト''を作成することができます。 これは``エイリアンスレッド''に相当するスレッドオブジェクトです。 スレッドモジュールの外部でスタートするスレッドで、 直接Cコードで実装されているようなものです。 ダミースレッドオブジェクトは機能が制限されています。 それらは常に、生きていて(alive)、活動していて(active)、 デーモン(daemon)であるが、join()することはできません。 エイリアンスレッドの終了は検知することが不可能であるので、 それらは削除されません。
group=None, target=None, name=None, args=(), kwargs={}) |
groupはNone
でなければいけません。
ThreadGroupクラスが実装されたときのための、
将来の拡張として予約されています。
targetはrun()メソッドによって呼出される、
呼出し可能オブジェクトです。
デフォルトはNone
であり、何も呼出さないことを意味します。
nameはスレッドの名前です。 デフォルトによって、ユニークな名前は``Thread-N''の形式で構築されます。 Nは小さな10進数です。
argsはtargetを呼出すときに渡される引数のタプルです。
デフォルトは()
です。
kwargsはtargetを呼出すときに渡される引数の辞書です。
デフォルトは{}
です。
サブクラスがコンストラクタをオーバーライドしたときは、
スレッドが何かを始める前に、基底クラスのコンストラクタ
(Thread.__init__()
)を確実に呼出さなくてはいけません。
) |
これはスレッドオブジェクトにつき一度だけ呼出すようにします。 オブジェクトのrun()メソッドが個別のスレッドの中で 呼出されるよう準備します。
) |
あなたは、このメソッドをサブクラスでオーバーライドします。 標準のrun()メソッドは、targetとして オブジェクトのコンストラクタに渡された、呼出し可能オブジェクトを呼出します。 もしあるのなら、argsとkwargs引数から得られたシーケンシャルな、 あるいは辞書の引数を使います。
[timeout]) |
timeout引数がNone
以外で与えられたとき、
それはタイムアウトを秒(またはその分数)で指定する浮動小数です。
スレッドは何度でもjoin()されることができます。
スレッドは自身にjoinすることはできません。 デッドロックを引き起こします。
スレッドがスタートする前にjoin()を試みることは 間違っています。
) |
name) |
名前は識別のためだけに使われる文字列です。 セマンティクスではありません。 複数のスレッドに同じ名前を与えることができます。 初期名はコンストラクタによってセットされます。
) |
多くの場合、スレッドはstart()メソッドを呼出した瞬間から run()メソッドが終了するまで生きています。
) |
daemonic) |
初期値は作成するスレッドから継承されます。
デーモンでないアクティブなスレッドが残ってないとき、 Pythonプログラム全体が終了します。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。