スレッドにはthreading.Thread のサブクラスを作る方法と threading.Thread のインスタンスを作成する方法がある[1]。
サブクラスを作るには次のようにする。
import threading
class TestThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
for i in range(3):
print "sub thread : " + str(i)
if __name__ == '__main__':
t1 = TestThread()
t1.start()
t1.join()
print "end"
インスタンスを作成するには次のようにする。
import threading
def foo(n):
for i in range(n):
print "sub thread : " + str(i)
if __name__ == '__main__':
t1 = threading.Thread(target=foo, name="foo", args=(3,))
t1.start()
t1.join()
print "end"
いずれも実行結果は次のようになる。
sub thread : 0 sub thread : 1 sub thread : 2 end
タイル地図作成プログラムでは、次の形のマルチスレッドが用いられている。 実行結果は先の二つプログラムと同じである。
import threading
class Test:
def run(self):
for i in range(3):
print "sub thread : " + str(i)
if __name__ == '__main__':
test = Test()
t1 = threading.Thread(target=test.run)
t1.start()
t1.join()
print "end"