Wie kann die maximale Anzahl von Threads, die gleichzeitig ausgeführt werden, begrenzt werden?

Ich möchte ein Programm erstellen, das mehrere Light Threads ausführt, sich jedoch auf eine konstante, vordefinierte Anzahl gleichzeitig ausgeführter Aufgaben beschränkt (jedoch ohne das Risiko eines Race Condition):

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()

Was ist der sicherste / schnellste Weg, dies umzusetzen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage