Atualmente este código imprime,
MainThread done at sec 1
MainThread done at sec 1
MainThread done at sec 2
MainThread done at sec 1
MainThread done at sec 0
MainThread done at sec 3
MainThread done at sec 2
MainThread done at sec 5
MainThread done at sec 4
Preciso imprimir
MainThread 1 done at sec 1
MainThread 3 done at sec 1
MainThread 2 done at sec 2
MainThread 3 done at sec 1
MainThread 1 done at sec 0
MainThread 2 done at sec 3
MainThread 2 done at sec 2
MainThread 3 done at sec 5
MainThread 1 done at sec 4
Como posso fazer isso, modificando esta linha de código?
print(threading.current_thread().name + ' done at sec ' + str(future.result()))
Aqui está o código completo
import concurrent.futures
import threading
import pdb
import time
import random
def Threads2(time_sleep):
time.sleep(time_sleep)
return time_sleep
all_sections = [random.randint(0, 5) for iii in range(10)]
test1 = []
with concurrent.futures.ThreadPoolExecutor(max_workers=3, thread_name_prefix="Ok") as executor:
working_threads = {executor.submit(Threads2, time_sleep): time_sleep for index, time_sleep in enumerate(all_sections)}
for future in concurrent.futures.as_completed(working_threads):
print(threading.current_thread().name + ' done at sec ' + str(future.result()))