我遇到了一個我正在開發的IO模塊以訪問文件格式(基於ASCII)的數據的問題。實例化QApplication後我的代碼的性能問題
它在普通python腳本中使用時表現良好,但當我嘗試在PyQt小部件中使用它時,它會慢5倍。
這是簡化的代碼,顯示了問題:
from silx.io import spech5
import time
from PyQt4.QtGui import QApplication
with spech5.SpecH5("../data/mesh_and_mca.dat") as f:
start = time.time()
a = f["1.1/measurement/mca_0/data"]
end = time.time()
print("Simple access in python ", end - start)
app = QApplication([])
with spech5.SpecH5("../data/mesh_and_mca.dat") as f:
start = time.time()
a = f["1.1/measurement/mca_0/data"]
end = time.time()
print("Access after initializing QApplication ", end - start)
第一嵌段需要10秒,而第二相同塊,app = QApplication([])
需要50秒後。 我可以在應用程序實例化之前和之後重複執行幾次代碼,並且在初始化應用程序之前的所有塊都相對較快,而之後的所有塊都很慢。
行a = f["1.1/measurement/mca_0/data"]
通過用Cython包裝的C函數導致數據文件被訪問78026次,每次讀取一行「行」。返回的對象是形狀爲(78026,1024)和dtype float64的節點陣列。
有沒有人有什麼可能導致此問題的線索? Qt和封裝的C代碼之間是否存在已知的問題/干擾?
您的操作系統和您的Python環境的細節可能會有所幫助 – user3419537
使用'QCoreApplication'是否有所作爲? – ekhumoro
Debian 8,Python 2.7.9和Python 3.4.2都顯示了這個問題。我也測試了PyQt4和PyQt5,沒有區別。 – PiRK