[Python] python 3 - concurrent.futures - get thread number

Discussão em 'Python' iniciado por Stack, Abril 12, 2025.

  1. Stack

    Stack Membro Participativo

    Currently this code prints,

    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


    I need it to print

    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


    How can I do this, by modifying this 1 line of code.

    print(threading.current_thread().name + ' done at sec ' + str(future.result()))


    Here is the full code

    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()))

    Continue reading...

Compartilhe esta Página