CG関係の備忘録ブログ

主にZBRUSH、blender

pythonサンプル マルチスレッド

マルチスレッド対応

 

参照HP

python で マルチスレッド(サンプルプログラム) - Qiita

 

処理概要

デバッグログ設定

計算処理(これがマルチスレッドで処理される?)

スレッドの定義

スレッド全体が終了するまでブロック

終了処理

 

import threading
import logging

# デバッグログ出力設定(どのスレッドの実行かがわかるので便利)
logging.basicConfig(level=logging.DEBUG, format="%(threadName)s: %(message)s")

# 指定最大値までの指定倍数の値を出力する
def counter(multiple=1, max=1):
    for i in range(1, max + 1):
        if i % multiple == 0:
            logging.debug(i)


if __name__ == "__main__":
    # スレッドの定義(targetは仕様する関数を指定、argsは引数を順番に指定)
    trd1 = threading.Thread(target=counter, args=(1, 10))
    trd2 = threading.Thread(target=counter, args=(2, 8))
    trd3 = threading.Thread(target=counter, args=(3, 9))
    # 処理開始
    trd1.start()
    trd2.start()
    trd3.start()

    # スレッド全体が終了するまでブロック
    for trd in threading.enumerate():
        if trd is threading.currentThread():
            continue
        trd.join()

    # 単体のブロックも可能
    # trd1.join()

    # 終了時の処理
    print("complete")

 

*余り説明がないので想定