我收到了以下代码:
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 ram(dell notebook)在核心i7第3代上执行需要1.6467秒
如果更改此行
weight = mass * gravity
到
return mass * gravity
突然间需要0.059083秒才能完成。
有谁知道为什么会这样?
编辑:我想我累了。我没注意到循环结束了。我的坏人
答案 0 :(得分:1)
使用以下行:
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次迭代后的质量*重力值。