2009年2月26日木曜日

[Python] threadingモジュールを使ってみる

Pythonでスレッドを使う方法は
  • threadをimportしてthread.start_new_thread(func, args)にスレッドとして動かした関数を指定。
  • スレッド化したいクラスで、threading.Treadを継承する
の2通り。(私が使ったことあるのは。)

threadはスレッドの終わりを検知する機能が無い。
=メインメソッドの実行が終わると、実行途中でも中断されてしまう。
(これを無理やり同期取ろうとするとwhile文でチェックし続けるとか
アホなコードになってしまいました。)

threadingではスレッドの実行終了のタイミングまで、実行を一時停止する機能がある。

[使用例]
import threading
import time

class testTreading(threading.Thread):
  def run(self):
    for i in range(1, 5):
      print i
      time.sleep(2)

r = registerRelationShip()
r.start()
r.join(1000) #スレッドの終了までの待ち時間
print "end"

[出力]
1
2
3
4
end

実行したい内容はrun()メソッドに書いて、
それをstart()メソッドで実行させる。

join()メソッドでスレッドの終了を待つので、
endが出力されるのは一番最後。

こっちの方が使い勝手良さそうかな。

0 件のコメント: