KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

Thread数を設定してみたコード

登録日 :2023/11/14 06:59
カテゴリ :Python基礎

試しに、Thread数を可変にしてコードを書いてみた。
ThreadはForループで立ち上げると良いようだ。
Semaphoreを指定することで、同時実行数をコントロールができそうだ。

つまり、Threadingで並列実行できる処理と、同時実行数が制限される処理を、関数にSemaphoreを引数に与えることで制御ができる、ということだ。

また、ここでは使っていないが、Queueを使って値(リスト)を共有することもできそうだ。

import threading
import logging
import time

logging.basicConfig(
    level=logging.DEBUG, format='%(threadName)s: %(message)s')


def worker(semaphore):
    with semaphore:
        logging.debug('start')
        time.sleep(2)
        logging.debug('end')


if __name__ == '__main__':
    NUM_THREAD = 5
    semaphore = threading.Semaphore(3)
    for _ in range(NUM_THREAD):
        t = threading.Thread(target=worker, args=(semaphore, ))
        t.start()