O caminho certo para limitar o número máximo de threads em execução ao mesmo tempo?
Eu gostaria de criar um programa que executa vários threads de luz, mas limita-se a um número constante e predefinido de tarefas em execução simultâneas, como este (mas sem risco de condição de corrida):
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()
Qual é a maneira mais segura / rápida de implementar isso?