sympy.geometry Point 类运行缓慢

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因为我不需要精确的精度?

Jim*_*ard 5

查看Point类文档,特别是第一个示例中的一个:

除非评估标志为 ,否则浮点数会自动转换为有理数False

evaluate因此,您可以传递一个在类初始化期间命名的标志Point

self.shape = sympy.geometry.Point(x,y, evaluate=False)
Run Code Online (Sandbox Code Playgroud)

这显然表明了你想要什么。