Cześć, jest oto taki prosty przykład
import time
import random
from concurrent.futures import ThreadPoolExecutor
letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
def print_letters(index, letter):
time.sleep(random.randint(1, 3))
print(index, letter)
with ThreadPoolExecutor(max_workers=10) as executor:
for index, letter in enumerate(letters, start=1):
executor.submit(print_letters, index, letter)
po uruchomieniu programu mamy np. takie coś
1 a
8 h
10 j
2 b
4 d
6 f
5 e
3 c
9 i
7 g
czy jest jakiś sposób, aby program wypisywał to w odpowiedniej kolejności jak poniżej?
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 j
czyli albo program sobie działa i wypisuje "1", kiedy będzie ona gotowa, później czeka na "2" i wypisuje, kiedy będzie gotowa itd. albo działa sobie i czeka aż wszystkie wątki się zakończą i wtedy wypisuje wszystkie w odpowiedniej kolejności.
Jeżeli ktoś może mnie nakierować lub poprawić kod tak, aby działało, będę wdzięczny. (jeżeli można, to najlepiej obie wersje w celach treningowych)