Правильный способ ограничить максимальное количество одновременно работающих потоков?

Я хотел бы создать программу, которая запускает несколько легких потоков, но ограничивается постоянным, заранее заданным числом одновременных запущенных задач, например, (но без риска состояния гонки):

import threading

def f(arg):
    global running
    running += 1
    print("Spawned a thread. running=%s, arg=%s" % (running, arg))
    for i in range(100000):
        pass
    running -= 1
    print("Done")

running = 0
while True:
    if running < 8:
        arg = get_task()
        threading.Thread(target=f, args=[arg]).start()

Какой самый безопасный / быстрый способ реализовать это?

Ответы на вопрос(0)

Ваш ответ на вопрос