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 !!!
答案 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
。
现在运行您的脚本,您将看到一个配置文件。