Python: Does one of these examples waste more memory?
Posted
by orokusaki
on Stack Overflow
See other posts from Stack Overflow
or by orokusaki
Published on 2010-03-20T16:14:12Z
Indexed on
2010/03/20
16:21 UTC
Read the original article
Hit count: 248
In a Django view function which uses manual transaction committing, I have:
context = RequestContext(request, data)
transaction.commit()
return render_to_response('basic.html', data, context) # Returns a Django ``HttpResponse`` object which is similar to a dictionary.
I think it is a better idea to do this:
context = RequestContext(request, data)
response = render_to_response('basic.html', data, context)
transaction.commit()
return response
If the page isn't rendered correctly in the second version, the transaction is rolled back. This seems like the logical way of doing it albeit there won't likely be many exceptions at that point in the function when the application is in production.
But... I fear that this might cost more and this will be replete through a number of functions since the application is heavy with custom transaction handling, so now is the time to figure out.
If the HttpResponse instance is in memory already (at the point of render_to_response()
), then what does another reference cost? When the function ends, doesn't the reference (response
variable) go away so that when Django is done converting the HttpResponse
into a string for output Python can immediately garbage collect it?
Is there any reason I would want to use the first version (other than "It's 1 less line of code.")?
© Stack Overflow or respective owner