How to give different names to ThreadPoolExecutor threads in Python

后端 未结 2 1458
抹茶落季
抹茶落季 2021-01-19 21:37

I have the below code for creating threads and running them.

from concurrent.futures import ThreadPoolExecutor
import threading


def task(n):
    result = 0         


        
相关标签:
2条回答
  • 2021-01-19 21:55

    You say: "both the threads have the same name".
    That's not correct! The name is the same because the same thread is used for both tasks: in fact task() exits immediately.
    In order to have both threads involved, you have to add some sleep in your task() function.

    Just to recap:

    (1) without sleep:

    from concurrent.futures import ThreadPoolExecutor
    import threading
    import time
    
    def task(n):
        result = 0
        i = 0
        for i in range(n): result = result + i
        print(f'{threading.current_thread().name} with variable {n}: {result}')
        
    executor = ThreadPoolExecutor(max_workers=3)
    executor.submit(task, (10))
    executor.submit(task, (100))    
    

    In this case the output will be:

    ThreadPoolExecutor-0_0 with variable 10: 45 ThreadPoolExecutor-0_0 with variable 100: 4950

    (2) with a sleep inside task(), to make the function longer in time:

    from concurrent.futures import ThreadPoolExecutor
    import threading
    import time
    
    def task(n):
        result = 0
        i = 0
        for i in range(n): result = result + i
        time.sleep(.5)
        print(f'{threading.current_thread().name} with variable {n}: {result}')
    
    executor = ThreadPoolExecutor(max_workers=3)
    executor.submit(task, (10))
    executor.submit(task, (100)) 
    

    In this case the output will be:

    ThreadPoolExecutor-0_0 with variable 10: 45 ThreadPoolExecutor-0_1 with variable 100: 4950

    0 讨论(0)
  • 2021-01-19 22:13

    from the docs:

    New in version 3.6: The thread_name_prefix argument was added to allow users to control the threading.Thread names for worker threads created by the pool for easier debugging.

    0 讨论(0)
提交回复
热议问题