我一直在尝试优化我的应用程序,虽然我在自己分析它时使该函数平均运行 10.06 秒,但当它放在 a 上时QThread
,它大约需要 17-22 秒。
在QThread
. _ _ 我该如何解决?
该函数实际上正在初始化一个名为 的类DocxDocument
,这是我从 Word 文件中读取并根据需要对其进行解析的文档。
我有一个QThread
创建此类并使用 Qt 信号将进度信息发送回 GUI。这是该类的代码:
class DocxImporterThread(QThread):
'''
This thread is used to import a .docx document, report its progress, and
then return the document that it parsed.
'''
reportProgress = pyqtSignal(int)
reportError = pyqtSignal(Exception, str)
reportText = pyqtSignal(str)
def __init__(self, filePath):
QThread.__init__(self)
self.setPriority(QThread.HighestPriority)
self._filePath = filePath
self._docx = None
self._html = ''
self._bookmarks = None
self._pages = None
self._stop = False
def run(self):
def myProgressHook(percentage):
self.reportProgress.emit(percentage)
def myCancelHook():
return self._stop
try:
self._docx = DocxDocument(self._filePath, myProgressHook, myCancelHook)
if not self._stop:
self._html = self._docx.getMainPage()
self._bookmarks = self._docx.getHeadings()
self._pages = self._docx.getPages()
except Exception as ex2:
print 'ERROR: The .docx document didn\'t import.'
self.reportError.emit(ex2, traceback.format_exc())
getMainPage()
,getHeadings()
和是瞬时的,getPages()
因为它们只是返回对构造函数已经创建的东西的引用。这是我用来分析我的DocxDocument
班级的代码:
testFile = 'some_file.docx'
statSave = 'profile.out'
def progress(percent):
print ' --', percent, '--'
cProfile.run('DocxDocument(testFile)', filename=statSave)
myStats = pstats.Stats(statSave)
myStats.sort_stats('cumulative', 'name')
myStats.print_stats()
感谢您花时间看这个!