pytho****@googl*****
pytho****@googl*****
2011年 11月 22日 (火) 02:05:34 JST
Revision: f20cda8fa64f Author: Naoki INADA <inada****@klab*****> Date: Mon Nov 21 09:00:53 2011 Log: Update 2.7.2: library/threading http://code.google.com/p/python-doc-ja/source/detail?r=f20cda8fa64f Modified: /library/threading.rst ======================================= --- /library/threading.rst Sat Apr 16 17:12:19 2011 +++ /library/threading.rst Mon Nov 21 09:00:53 2011 @@ -26,6 +26,21 @@ Python 2.5 から, 幾つかの Thread のメソッドは間違った呼び出しに対して :exc:`AssertionError` の代わりに :exc:`RuntimeError` を返します。 +.. impl-detail:: + + CPython は :term:`Global Interpreter Lock` のため、ある時点で Python コードを実行できる + スレッドは1つに限られます。 (いくつかのパフォーマンスが強く求められるラ イブラリは + この制限を克服しています) + アプリケーションにより良くマルチコアのマシンの計算能力を利用させたい場合 は、 + :mod:`multiprocessing` モジュールの利用をお勧めします。 + ただし、I/Oバウンドなタスクを並行して複数走らせたい場合においては、 + マルチスレッドは正しい選択肢です。 + +.. seealso:: + + 最新バージョンの `threading module Python source code + <http://svn.python.org/view/python/branches/release27-maint/Lib/threading.py?view=markup>`_ + このモジュールでは以下のような関数とオブジェクトを定義しています: .. function:: active_count() @@ -41,6 +56,8 @@ 新しい条件変数 (condition variable) オブジェクトを返すファクトリ関数で す。 条件変数を使うと、ある複数のスレッドを別のスレッドの通知があるまで待機さ せられます。 + :ref:`condition-objects` を参照してください。 + .. function:: current_thread() currentThread() @@ -69,6 +86,8 @@ :meth:`wait` メソッドは、全てのフラグが真になるまでブロックするよ うになっています。 + :ref:`event-objects` を参照してください。 + .. class:: local @@ -96,6 +115,8 @@ 後のロック獲得の試みはロックが解放されるまでブロックします。どのス レッドでもロックを解放できます。 + :ref:`lock-objects` を参照してください。 + .. function:: RLock() @@ -105,6 +126,8 @@ クされずにもう一度それを獲得できます ; そのスレッドは獲得した回数だけ解放しなければいけません。 + :ref:`rlock-objects` を参照してください。 + .. function:: Semaphore([value]) :noindex: @@ -116,6 +139,8 @@ で必要ならば処理をブロックします。 *value* を指定しない場合、デフォ ルトの値は 1 になります。 + :ref:`semaphore-objects` を参照してください。 + .. function:: BoundedSemaphore([value]) @@ -129,15 +154,21 @@ .. class:: Thread + :noindex: 処理中のスレッドを表すクラスです。このクラスは制限のある範囲内で安 全にサブクラス化できます。 + :ref:`thread-objects` を参照してください。 + .. class:: Timer + :noindex: 指定時間経過後に関数を実行するスレッドです。 + :ref:`timer-objects` を参照してください。 + .. function:: settrace(func) @@ -281,7 +312,7 @@ 別の処理スレッド中で呼び出されるように調整します。 同じスレッドオブジェクトに対し、このメソッドを2回以上呼び出した場合、 - :exc:`RuntimeException` を送出します。 + :exc:`RuntimeError` を送出します。 .. method:: run() @@ -403,7 +434,7 @@ 全てのメソッドは原子的に実行されます。 -.. method:: Lock.acquire([blocking=1]) +.. method:: Lock.acquire([blocking]) ブロックあり、またはブロックなしでロックを獲得します。 @@ -684,7 +715,7 @@ ^^^^^^^^^^^^^^^^^^^^^^^ セマフォはしばしば、容量に限りのある資源、例えばデータベースサーバなど -を保護するために使われます。リソースのサイズが固定の状況では、常に有限 +を保護するために使われます。リソースが固定の状況では、常に有限 セマフォを使わねばなりません。主スレッドは、作業スレッドを立ち上げる 前にセマフォを初期化します:: @@ -726,7 +757,7 @@ .. method:: is_set() isSet() - + 内部フラグの値が真である場合にのみ真を返します。 .. versionchanged:: 2.6 @@ -734,30 +765,34 @@ .. method:: set() - + 内部フラグの値を真にセットします。フラグの値が真になるのを待ってい る全てのスレッドを起こします。一旦フラグが真になると、スレッドが :meth:`wait` を呼び出しても全くブロックしなくなります。 .. method:: clear() - + 内部フラグの値を偽にリセットします。以降は、 :meth:`set` を呼び出し て再び内部フラグの値を真にセットするまで、 :meth:`wait` を呼出した スレッドはブロックするようになります。 .. method:: wait([timeout]) - + 内部フラグの値が真になるまでブロックします。 :meth:`wait` 処理に入っ た時点で内部フラグの値が真であれば、直ちに処理を戻します。そうでな い場合、他のスレッドが :meth:`set` を呼び出してフラグの値を真にセッ トするか、オプションのタイムアウトが発生するまでブロックします。 - + *timeout* 引数を指定して、 ``None`` 以外の値にする場合、タイムアウ トを秒 (または端数秒) を表す浮動小数点数でなければなりません。 - このメソッドは常に ``None`` を返します。 + このメソッドは終了時の内部フラグを返します。 + timeout が指定されて、操作がタイムアウトしたとき以外は、 ``True`` を 返すはずです。 + + .. versionchanged:: 2.7 + 以前は、このメソッドは常に ``None`` を返していました。 .. _timer-objects: