python ThreadPoolExecutor 获取每个线程执行时间
时间: 2023-11-02 12:56:11 浏览: 392
你可以使用`ThreadPoolExecutor`来执行多线程任务,并且可以结合`time`模块来获取每个线程的执行时间。下面是一个示例代码:
```python
import concurrent.futures
import time
def task():
# 执行需要计时的任务
time.sleep(1) # 假设这里是需要计时的任务
def main():
# 创建 ThreadPoolExecutor 对象
executor = concurrent.futures.ThreadPoolExecutor(max_workers=5)
# 创建一个字典用于保存每个线程的执行时间
thread_times = {}
# 提交任务给线程池并获取到 Future 对象列表
futures = [executor.submit(task) for _ in range(5)]
# 遍历 Future 对象列表,获取每个线程的执行时间
for i, future in enumerate(futures):
start_time = time.time() # 记录每个线程的开始时间
future.result() # 等待线程执行完成
end_time = time.time() # 记录每个线程的结束时间
thread_times[i] = end_time - start_time # 计算每个线程的执行时间
# 输出每个线程的执行时间
for thread_id, execution_time in thread_times.items():
print(f"Thread {thread_id} execution time: {execution_time} seconds")
if __name__ == '__main__':
main()
```
在上面的示例中,我们创建了一个`ThreadPoolExecutor`对象,并提交了5个任务给线程池。然后,通过使用`time.time()`函数记录任务的开始时间和结束时间,计算出每个线程的执行时间,并保存在`thread_times`字典中。最后,我们遍历该字典输出每个线程的执行时间。
请注意,这里的执行时间只是一个示例,你可以根据具体的任务进行相应的修改。
阅读全文