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?