Shi*_*bli 3 python sympy python-3.x
我有一个读取非结构化网格的代码。我围绕以下几何实体编写了包装器sympy.geometry:
class Point:
def __init__(self, x, y, parent_mesh):
self.shape = sympy.geometry.Point(x,y)
self.parent_mesh = parent_mesh
self.parent_cell = list()
Run Code Online (Sandbox Code Playgroud)
一切工作正常,但sympy.geometry.Point每个 的初始化都需要花费大量时间Point。实际上,代码还没有执行完数千点。用 C++ 编写的类似代码只需几秒钟即可完成。如果没有它,代码就足够快了(我删除了它并计时)。我读到一个可能的原因可能是sympy.geometry为了精度而将浮点数转换为有理数。有没有办法(标志)来加速,sympy.geometry因为我不需要精确的精度?
查看Point类文档,特别是第一个示例中的一个:
除非评估标志为 ,否则浮点数会自动转换为有理数
False。
evaluate因此,您可以传递一个在类初始化期间命名的标志Point:
self.shape = sympy.geometry.Point(x,y, evaluate=False)
Run Code Online (Sandbox Code Playgroud)
这显然表明了你想要什么。