0

我进行了以下计算:

from sympy import mpmath as mp
mp.besseljzero(1000, 100)

可以理解的是,如果不是更多的话,这需要一些时间 > 10 秒(没有计时)。

随后的调用速度明显更快,这让我认为它缓存了结果。我想知道还有哪些其他功能/计算 sympy cahces?

这是否意味着如果我想计算mp.besseljzero(n, m)n < N 和 m < M 最好计算mp.besseljzero(N-1, M-1)然后访问其他结果?

提前致谢。

我应该补充一点,我在 sympy FAQ 上找到了这个信息。似乎支持某种缓存。如果有更多文档,您可以指出我会有所帮助!

https://github.com/sympy/sympy/wiki/Faq

4

1 回答 1

2

mpmath 有自己的记忆,与 Sympy 的其余部分分开,它会在精度变化时重置。

SymPy 有一个缓存,用于缓存最昂贵的操作。在 0.7.6 之前的 SymPy 版本中,缓存是无限的,这可能会导致内存问题。在 0.7.6 以上,缓存为 LRU 缓存,使用的内存更少,但速度稍慢。要恢复速度,您可以安装 package fastcache,它是一个用 C 编写的 LRU 缓存,可以大大提高性能。

您引用的常见问题解答页面显示了如何禁用缓存或手动清除它。

于 2014-11-19T18:00:07.367 回答