Pythonで簡単マルチスレッド(マルチプロセスではない)

続けての記事になりますが、Pythonって、ほかの言語を触っている人なら入り口がとても広い言語だと私は思います。
強いて言うと、インデントの縛りが鬱陶しい位でしょうか。

今回は、マルチスレッドを簡単に実装する方法についてちょっとまとめてみました。

よろしければお付き合いください。

まず、マルチスレッドとマルチプロセスにつじてですが
わかりやすく言うと、CPUに対する負荷のかけ具合が変わるところが大きいです。
マルチスレッドは1CPU上でスレッド実行するのに対し、マルチプロセスでは、適切な設定をすれば
設定した内容に従ってCPUを利用するようになります。

どちらをとるかは好みの問題ですが。今回は、マルチスレッドについて書いていきます。

まずは、サンプルコードをご覧ください。

# -*- coding: utf-8 -*-

import threading

def thread_test(tname, maxval):
    localval = 0
    while True:
        localval += 1
        print "[" + tname + "] localval : " + str(localval)
        if (localval == maxval):
            break;
    return

if __name__ == "__main__":
    t1 = threading.Thread(target=thread_test, name="thread1", args=("thread1", 1000))
    t2 = threading.Thread(target=thread_test, name="thread2", args=("thread2", 2000))
    t3 = threading.Thread(target=thread_test, name="thread3", args=("thread3", 3000))

    t1.start()
    t2.start()
    t3.start()

と、たったこれだけで、マルチスレッドで動きます。
(実際に動くコードですので、環境をお持ちの方は試してみてください)

肝になるのは、
import threading
threading.Thread(...)

の部分です。
import文で、threading の関数の読み込みと
threading.Thread で、スレッドの実物作成ですね。

作成した後は、start()するだけです。

JavaやC#、Perlを触ったことある人なら、感覚で書ける感じがたまりません。
(すみません。Rubyは勉強不足です・・・・)

マルチプロセスについては、また別途取り上げようと思います。

  • entry28ツイート
  • Google+

PageTop