<p>一种可能的方法是使用共享结构来捕获每个线程的时间执行统计信息。<br/>
考虑以下示例(计算10个连续数字的<em>阶乘</em>):</p>
<pre><code>from concurrent.futures import ThreadPoolExecutor
from threading import current_thread
from functools import partial
import time
import random
import math
import pprint
def fact(time_dict, num):
t0 = time.time()
res = math.factorial(num)
time.sleep(random.randint(1, 5))
time_dict[current_thread().name] = time.time() - t0
return res
time_dict = {}
with ThreadPoolExecutor(max_workers=10, thread_name_prefix='thread') as executor:
factorials = executor.map(partial(fact, time_dict), range(1, 11))
pprint.pprint(['result: ', list(factorials)])
pprint.pprint(['timings:', time_dict])
</code></pre>
<p>样本输出:</p>
<pre><code>['result: ', [1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]]
['timings:',
{'thread_0': 2.005145788192749,
'thread_1': 2.004167079925537,
'thread_2': 5.0020458698272705,
'thread_3': 4.004181146621704,
'thread_4': 3.0027127265930176,
'thread_5': 5.001489877700806,
'thread_6': 3.002448797225952,
'thread_7': 5.001359224319458,
'thread_8': 2.005021095275879,
'thread_9': 2.0049009323120117}]
</code></pre>