Python 时间比它应该的要快

Python 时间比它应该的要快,python,python-3.x,Python,Python 3.x,我正在用timeit运行一个测试,但我不了解发生了什么。我一直在评估2升到一个幂,但每次它都说需要0.02±0.01秒。我做错了什么 例如: 这将需要2.5分钟来执行: 2**10000000 这将立即返回0.01637562597170472: timeit.Timer(stmt="2**10000000").timeit() 执行此操作不需要2.5分钟。转换为十进制字符串需要2.5分钟,这是默认情况下打印整数的方式。尝试(2**10000000)%10000000或len(十六进制(2*

我正在用timeit运行一个测试,但我不了解发生了什么。我一直在评估2升到一个幂,但每次它都说需要0.02±0.01秒。我做错了什么

例如:

这将需要2.5分钟来执行:

2**10000000
这将立即返回0.01637562597170472:

timeit.Timer(stmt="2**10000000").timeit()

执行此操作不需要2.5分钟。转换为十进制字符串需要2.5分钟,这是默认情况下打印整数的方式。尝试
(2**10000000)%10000000
len(十六进制(2**10000000))

添加@Ryan,如果您尝试
a=2**10000000
,它将立即返回。但是,如果您尝试打印(a),则需要很长时间才能执行


正如@Ryan所说,转换为十进制字符串需要花费这么长的时间。由于
timeit.Timer(stmt=“2**10000000”).timeit()不会打印任何内容,它也会立即返回。

二进制十进制转换有更快的算法,但Python使用了一个简单的算法。您可以在第三方库中找到此操作和任意精度数学的更快实现,如。使用更快的算法,此转换只需不到一秒钟,而不是2.5分钟。
2**10000000