0

別のスレッドをスレッド プールに追加する前に、スレッドの最大数に達したときにブロックするスレッド プールを作成しようとしています。

import thread_pool
import time

def slow_greeting(msg):
    time.sleep(5)
    print("Hello there {}".format(msg))

def main():
    tp = thread_pool.ThreadPool(3)
    while True:
        print("Top of the loop")
        tp.add_task(slow_greeting, 'a')
        tp.add_task(slow_greeting, 'b')
        tp.add_task(slow_greeting, 'c')

        # Should block here, waiting for a free thread
        tp.add_task(slow_greeting, 'd')
        tp.add_task(slow_greeting, 'e')

ただし、これが実行されると、「ループの先頭」が何度も何度も出力されますが、実行されると実行さslow_greetingれます。

タスクを実行するための使用可能なスレッドが少なくとも 1 つになるまでタスクを追加しようとするときに、スレッド プールをブロックするにはどうすればよいですか?

4

0 に答える 0