threadを使って簡易的に並列処理を実装することができる。
threading.Thread
クラスの生成時にtarget引数に指定する関数を、別スレッドで並列的に実行できる。
※並列して処理が動作するため、複数のスレッドでデータを共有する場合にはロックなどを使用してスレッドセーフにする必要がある。
# 1秒おきと2秒おきにprintする処理をthreadで実行
import threading
import time
def worker(interval):
for n in range(3):
time.sleep(interval)
print("%s --> %d" % (threading.current_thread().name, n))
th1 = threading.Thread(name="a", target=worker, args=(1,))
th2 = threading.Thread(name="b", target=worker, args=(2,))
th1.start()
th2.start()
参考:17.1. threading — スレッドベースの並列処理
※threadで実行しても、完全に同時に2つの処理が動作するわけではなく、CPython実装ではマルチコアを活かした並行処理はmultiprocessingを使わないとできない。