Python代码运行缓慢

时间:2018-06-24 15:17:37

标签: python

Python代码运行非常慢。快速启动,然后变为爬网。我可以做些什么来加快速度吗?我正在拉一个文本文件,读取文件的内容,过滤文本文件的内容,并将其写入csv,以供其他人稍后用于json。

正如您确定的那样,我刚刚开始这样做。任何帮助将不胜感激。

class AppManager(QtCore.QObject):
    '''
    methods of AppObject will be available from javascript
    '''
    def __init__(self, webview):
        QtCore.QObject.__init__(self)


class WebView(QWebEngineView):
    def __init__(self, parent=None):
        QWebEngineView.__init__(self, parent)
        self.setPage(WebEnginePage(self))

    def contextMenuEvent(self, event):
        pass


class AppWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.view = WebView(self)
        self.page = self.view.page()
        self.app_manager = AppManager(self.view)
        self.page.mainFrame().addToJavaScriptWindowObject('app_manager', self.app_manager)
        # ERROR in above line !!!

1 个答案:

答案 0 :(得分:5)

如果您想知道代码的哪一部分很慢,则需要使用探查器。

您可以使用cProfile,它是标准库的一部分:

python -m cProfile -o profile.txt -s cumtime myscript.py

这会将分析结果写入profile.txt,并按累积时间对配置文件进行排序。 这将为您提供程序花费时间的概览。


有关更详细的视图,可以使用line_profiler模块。这甚至可以告诉您每行代码使用多少时间。

安装line_profiler后,将以下内容添加到脚本的开头:

import line_profiler
import atexit
profile = line_profiler.LineProfiler()
atexit.register(profile.print_stats)

现在将@profile装饰器添加到您的所有函数中,如下所示:

@profile
def timeteller():
    now = datetime.datetime.now()
    month = str('{:02d}'.format(now.month))
    day1 = now.day -1
    day =  str('{:02d}'.format(day1))
    year =str(now.year)
    time =year+month+day
    return time

您应该将脚本末尾的内容放入函数中(例如main),并在其中添加@profile

现在运行您的脚本,您将看到一个配置文件。