我想创建一个程序,运行多个轻线程,但限制自己在一个恒定的,预定义数量的并发运行任务,像这样(但没有竞争条件的风险) :
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()
实现这一点的最安全/最快的方法是什么?