互操作性建议 - Python, C, Matplotlib/OpenGL运行时效率
当前情况:
- 有一段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来做划算。
希望这些信息对你有帮助。