对于分析应用程序,我试图:
但是,以这种方式获取文件名会导致pyplot.show()花费很长时间。我已将问题归结为以下测试用例:
import matplotlib.pyplot as plt
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication(None)
fd = QtGui.QFileDialog(None)
filenames = fd.getOpenFileNames(caption='Select Data Files')
plt.plot([1,2,3,4,5])
plt.show()
请注意,我甚至没有对这里的文件名做任何事情 - 只是得到它们。
从对话框中选择单个文件会导致绘图时间为10秒。有趣的是,show()完成所需的时间与所选文件的数量大致呈线性关系。对于10个文件,绘图需要大约67秒。
这对于绘制来自少数几个文件的数据并不是一件大事,但是当从蒙特卡罗模拟中聚合数据时,有数千个文件可能需要几个小时来显示。告诉matplotlib使用Qt4Agg后端导致相同的行为。
如果我注释掉对getOpenFileNames的调用,脚本将在一秒钟内完成。
我正在运行相关软件包的以下版本(应该是最新版本):
我卸载了sip,qt4并重新安装了它们 - 同样的问题。我已经在两台独立的机器上看到了这个问题 - 两台机器都运行32位Ubuntu 12.04。
任何帮助都会非常感激 - 我已经浪费了大量时间等待剧情展示。
更新