スレッド
スレッドを使うと1つのプログラム(プロセス)内で、複数の動作を同時に行うことができます。Pythonにはthreadモジュールとthreadingモジュールが用意されていて、これらのモジュールを使用することにより、スレッドを利用できます。
threadモジュールは低レベルのスレッド処理が必要なとき使用します。threadingモジュールは高レベルなスレッド処理に利用します。
threadモジュール
threadモジュールのstart_new_thread関数を使うと、指定した関数をスレッドとして実行できます。この関数はビルトイン関数applyと同じ使い方をします。最初の引数は関数名で、2番目に引数(tuple)を指定します。オプションとして3番目の引数も指定できます。これはキーワードで引数を指定するものです。
サンプル
# Thread test import thread n = 0 def func1() : global n while 1 : n += 1 if n > 10000000 : break args = () thread.start_new_thread(func1, args) while 1 : print n |
threadingモジュール
threadingモジュールを使うと、スレッドをオブジェクトのように扱うことができます。具体的には、threading.Threadクラスを継承したクラスを作成して、その中のrun()メソッドをオーバーライドしてアプリケーション独自の処理をさせるものです。threading.Threadクラスではrun()メソッドとコンストラクタ(__init__)だけをオーバーライドします。ただし、__init__のオーバーライドは必要がなければ行いません。__init__をオーバーライドするときは、必ず他の処理を行う前に、基本クラス(Threadクラス)のコンストラクタを呼び出します。
サンプル
# Thread test import threading class MyTask(threading.Thread) : def run(self) : for i in range(0, 20) : print i task1 = MyTask() task1.run() print 'end' |