Moh*_*med 6 python django exception
python异常慢吗?我正在使用python异常来构建我的Web应用程序中的programm,我想知道抛出异常将如何影响我的应用程序的性能.你有什么想法?
以下哪一项声明在内存和CPU方面较便宜?
try:
artist = Artist.objects.get(id=id)
except:
raise Http404
artist = Artist.objects.filter(id=id)
if not artist:
return HttpResponse('404')
Run Code Online (Sandbox Code Playgroud)
jat*_*ism 15
在性能方面,处理异常将是您最不担心的问题.不过,我建议您使用Django提供的快捷方式:
from django.shortcuts import get_object_or_404
artist = get_object_or_404(Artist, id=id)
Run Code Online (Sandbox Code Playgroud)
哪个分配对象artist或返回404.这是双赢的!
此外,您应该查看django-debug-toolbar,它为开发人员提供渲染/ CPU时间,上下文切换以及各种其他有用的数据花絮,可能只是您需要的工具.
Ned*_*der 10
要真正了解系统的性能,您必须对其进行分析.但是Python是一种鼓励使用这样的异常的语言,因此它们没有像其他语言那样的异常开销.
例如,有时人们会争论这个选择:
if hasattr(obj, "attr"):
use(obj.attr)
else:
some_other(obj)
Run Code Online (Sandbox Code Playgroud)
要么:
try:
use(obj.attr)
except AttributeError:
some_other(obj)
Run Code Online (Sandbox Code Playgroud)
那些说你应该使用第一个来避免异常的人需要理解内部,hasattr是通过访问属性实现的,如果引发AttributeError则返回False.实际上,两个代码块都使用异常.