【发布时间】:2018-07-20 09:22:33
【问题描述】:
我有以下代码用于创建线程并运行它们。
from concurrent.futures import ThreadPoolExecutor
import threading
def task(n):
result = 0
i = 0
for i in range(n):
result = result + i
print("I: {}".format(result))
print(f'Thread : {threading.current_thread()} executed with variable {n}')
def main():
executor = ThreadPoolExecutor(max_workers=3)
task1 = executor.submit(task, (10))
task2 = executor.submit(task, (100))
if __name__ == '__main__':
main()
当我在 Windows 10 机器上运行代码时,这是生成的输出:
I: 45
Thread : <Thread(ThreadPoolExecutor-0_0, started daemon 11956)> executed with variable 10
I: 4950
Thread : <Thread(ThreadPoolExecutor-0_0, started daemon 11956)> executed with variable 100
Process finished with exit code 0
正如我们所见,两个线程具有相同的名称。我如何通过给它们不同的名称来区分它们?这在某种程度上是 concurrent.futures 类的一个特性吗?
非常感谢您的任何回答。
【问题讨论】:
-
由于期货 api 本身目前似乎不支持此功能,因此在您在
submit上提供的可调用文件中,尝试:threading.current_thread().setName()。
标签: python-3.x multithreading concurrent.futures