Python concurrent.futures 几乎没有变化的性能差异
Python concurrent.futures performance difference with little change
我得到了以下代码:
from concurrent.futures import ThreadPoolExecutor, wait
import datetime
def calculate_mass(mass):
for _ in range(10000):
gravity = 9.8
weight = mass * gravity
def perform_calculations():
with ThreadPoolExecutor(3) as pool:
pool.map(calculate_mass, range(1000))
if __name__ == '__main__':
start = datetime.datetime.now()
perform_calculations()
end = datetime.datetime.now()
print((end - start).total_seconds())
在具有 8gb 内存的第 3 代 i7(戴尔笔记本)上执行需要 1.6467 秒
如果更改此行
weight = mass * gravity
到
return mass * gravity
突然间需要 0.059083 秒才能完成。
有人知道为什么会这样吗?
编辑:我想我累了。我没有注意到循环正在结束。我的坏人
用行:
for _ in range(10000):
gravity = 9.8
weight = mass * gravity
它正在迭代 for 循环 10,000 次。这需要时间。
然而,当您将其更改为:
for _ in range(10000):
gravity = 9.8
return mass * gravity
它只是在 for 循环迭代 1 次后返回质量 * 重力的值。
我得到了以下代码:
from concurrent.futures import ThreadPoolExecutor, wait
import datetime
def calculate_mass(mass):
for _ in range(10000):
gravity = 9.8
weight = mass * gravity
def perform_calculations():
with ThreadPoolExecutor(3) as pool:
pool.map(calculate_mass, range(1000))
if __name__ == '__main__':
start = datetime.datetime.now()
perform_calculations()
end = datetime.datetime.now()
print((end - start).total_seconds())
在具有 8gb 内存的第 3 代 i7(戴尔笔记本)上执行需要 1.6467 秒
如果更改此行
weight = mass * gravity
到
return mass * gravity
突然间需要 0.059083 秒才能完成。
有人知道为什么会这样吗?
编辑:我想我累了。我没有注意到循环正在结束。我的坏人
用行:
for _ in range(10000):
gravity = 9.8
weight = mass * gravity
它正在迭代 for 循环 10,000 次。这需要时间。
然而,当您将其更改为:
for _ in range(10000):
gravity = 9.8
return mass * gravity
它只是在 for 循环迭代 1 次后返回质量 * 重力的值。