Это часть моего кода.
Например, даже если 3 из 10 завершаются первыми, я хочу, чтобы следующие 3 запускались сразу и всегда поддерживали 10 потоков.
Однако текущий код переходит к следующим 10 только тогда, когда все 10 полностью завершены.
Как я могу изменить код?
Я всегда хочу сохранить определенное количество потоков, но в нынешнем виде мне нужно полностью завершить предыдущие 10 потоков, прежде чем перейти к следующим 10.
import concurrent.futures
import time
def example_task(n):
print(f"Task {n} started.")
time.sleep(n)
print(f"Task {n} completed.")
return n
with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
futures = []
for i in range(10):
futures.append(executor.submit(example_task, i+1))
for future in concurrent.futures.as_completed(futures):
try:
result = future.result()
print(f"Result of task: {result}")
next_task = len(futures) + 1
futures.append(executor.submit(example_task, next_task))
except Exception as e:
print(f"Error: {e}")