我正在开发一个IO模块,用于访问文件格式(基于ASCII)的数据。你知道吗
当在常规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次,每次读取一行。返回的对象是shape(780261024)和dtypefloat64的numpy数组。你知道吗
有人知道是什么导致了这一切吗?Qt和包装的C代码之间是否存在已知的问题/干扰?你知道吗
一位同事终于找到了根本原因!你知道吗
如果语言环境不是默认的“C”,则底层C库会做一些额外的工作(请参见https://github.com/silx-kit/silx/blob/master/silx/io/specfile/src/locale_management.c)。 并且
QApplication
将locale设置为'en_美国.UTF-8'。你知道吗所以我可以复制这个问题而不需要
QApplication
:很抱歉问了这个非常具体的问题。我希望有关
QApplication([])
修改区域设置的信息可以帮助将来的人。你知道吗相关问题 更多 >
编程相关推荐