互操作性建议 - Python, C, Matplotlib/OpenGL运行时效率

1 投票
1 回答
746 浏览
提问于 2025-04-18 07:21

当前情况:

  • 有一段C语言代码,正在重写,以便每次都能进行几乎相同类型的模拟(研究小鼠的学习行为)
  • 每次模拟都要写一段Matlab代码来绘制结果(2D图,可能还有3D图)

我的目标:

  • 设计一个图形用户界面(GUI,使用wxPython),让我能构建一个动态模拟器
  • 这个GUI还要通过OpenGL(或者可能用Matplotlib)显示模拟结果
  • 使用C语言的包装器(CFFI)来运行模拟,并把结果(平均值)发送到OpenGL或Matplotlib

问题:

  • 为了让这个软件运行得尽可能高效,我觉得应该使用CFFI来运行模拟……但我不太确定是让这个FFI实例(或者一个单独的实例?)使用OpenGL的C语言绑定来处理所有图形相关的工作,然后把生成的图形传递给Python层在GUI中显示,还是让CFFI把模拟的平均值(要绘制的数据)发送到Python层的变量中,然后用PyOpenGL或Matplotlib来绘制图形。

1 个回答

1

了解一下模拟运行的时间和你希望图表更新的速度会很有帮助。你是想要接近实时的更新吗?每次更新需要几十毫秒?还是几秒钟?或者几分钟?

如果你想画图,我建议用Matplotlib,而不是OpenGL。即使你自己动手修改Matplotlib的代码,让它完全符合你的需求,可能也比用OpenGL来做要简单得多。而且Matplotlib还有“XKCD”风格的图表哦 :-)

PyOpenGL和wxPython配合得很好。现在的3D图形大部分工作都是由显卡来完成的,所以如果你决定走这条路,用C语言来做3D图形可能没有用Python来做划算。

希望这些信息对你有帮助。

撰写回答