<?xml version="1.0" encoding="utf-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for I say things</title>
	<atom:link href="http://fseoane.net/blog/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://fseoane.net/blog</link>
	<description>mostly about programming, machine learning and such</description>
	<lastBuildDate>Sat, 19 May 2012 01:49:45 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
	<item>
		<title>Comment on line-by-line memory usage of a Python program by Pay Roll</title>
		<link>http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/#comment-77544</link>
		<dc:creator>Pay Roll</dc:creator>
		<pubDate>Sat, 19 May 2012 01:49:45 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1164#comment-77544</guid>
		<description>Congrats on the article!!</description>
		<content:encoded><![CDATA[<p>Congrats on the article!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on line-by-line memory usage of a Python program by Almost Accurate</title>
		<link>http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/#comment-77188</link>
		<dc:creator>Almost Accurate</dc:creator>
		<pubDate>Wed, 25 Apr 2012 21:29:59 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1164#comment-77188</guid>
		<description>This is only an approximation... The reason there is a lack of memory monitoring tools for Python is because Python has a very unique way of managing its objects.

An example: If you were to set two variables equal to the same string, you will find that Python does not require extra memory to store the second string. Why? Python hashes all objects, if another object has the same hash, it reuses the same object until one of the objects creates a new unique hash.  You can prove this with python by setting two variables to the same string then calling obj.__hash__ and noting that the returned value is exactly the same for both variables.

obj1=&#039;The Quick Brown Fox&#039;
obj2=&#039;The Quick Brown Fox&#039;
print obj1.__hash__==obj2.__hash__</description>
		<content:encoded><![CDATA[<p>This is only an approximation&#8230; The reason there is a lack of memory monitoring tools for Python is because Python has a very unique way of managing its objects.</p>
<p>An example: If you were to set two variables equal to the same string, you will find that Python does not require extra memory to store the second string. Why? Python hashes all objects, if another object has the same hash, it reuses the same object until one of the objects creates a new unique hash.  You can prove this with python by setting two variables to the same string then calling obj.__hash__ and noting that the returned value is exactly the same for both variables.</p>
<p>obj1=&#8217;The Quick Brown Fox&#8217;<br />
obj2=&#8217;The Quick Brown Fox&#8217;<br />
print obj1.__hash__==obj2.__hash__</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on line-by-line memory usage of a Python program by Marcel</title>
		<link>http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/#comment-77169</link>
		<dc:creator>Marcel</dc:creator>
		<pubDate>Wed, 25 Apr 2012 12:57:42 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1164#comment-77169</guid>
		<description>Wow. Great  thanx a lot</description>
		<content:encoded><![CDATA[<p>Wow. Great  thanx a lot</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on line-by-line memory usage of a Python program by Rohit Yadav</title>
		<link>http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/#comment-77165</link>
		<dc:creator>Rohit Yadav</dc:creator>
		<pubDate>Wed, 25 Apr 2012 07:47:56 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1164#comment-77165</guid>
		<description>Nice, but as you mentioned you&#039;re querying ps, is the returned stats accurate or just hint-some?</description>
		<content:encoded><![CDATA[<p>Nice, but as you mentioned you&#8217;re querying ps, is the returned stats accurate or just hint-some?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on line-by-line memory usage of a Python program by fabian</title>
		<link>http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/#comment-77164</link>
		<dc:creator>fabian</dc:creator>
		<pubDate>Wed, 25 Apr 2012 06:51:21 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1164#comment-77164</guid>
		<description>@Christopher Brown: When a function is called more than once (as in loops), it just prints the maximum.</description>
		<content:encoded><![CDATA[<p>@Christopher Brown: When a function is called more than once (as in loops), it just prints the maximum.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on line-by-line memory usage of a Python program by fabian</title>
		<link>http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/#comment-77163</link>
		<dc:creator>fabian</dc:creator>
		<pubDate>Wed, 25 Apr 2012 06:47:52 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1164#comment-77163</guid>
		<description>@Kapil: just for each line in the profile&#039;d function, not for each executed line.

Right now I&#039;m calling ps to get the memory usage because that works across all UNIX. In the future it could be special-case for  a particular OS (for example, read from /proc in linux) and leave ps as a fallback. That would avoid forking on most cases.</description>
		<content:encoded><![CDATA[<p>@Kapil: just for each line in the profile&#8217;d function, not for each executed line.</p>
<p>Right now I&#8217;m calling ps to get the memory usage because that works across all UNIX. In the future it could be special-case for  a particular OS (for example, read from /proc in linux) and leave ps as a fallback. That would avoid forking on most cases.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on line-by-line memory usage of a Python program by Alex Goretoy</title>
		<link>http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/#comment-77162</link>
		<dc:creator>Alex Goretoy</dc:creator>
		<pubDate>Wed, 25 Apr 2012 06:40:45 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1164#comment-77162</guid>
		<description>Awesome!!!</description>
		<content:encoded><![CDATA[<p>Awesome!!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on line-by-line memory usage of a Python program by Huseyin</title>
		<link>http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/#comment-77161</link>
		<dc:creator>Huseyin</dc:creator>
		<pubDate>Wed, 25 Apr 2012 06:28:26 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1164#comment-77161</guid>
		<description>Great job. Only thing is I found myself calculating net memory usage of every line by subtracting previous line&#039;s usage from its usage.</description>
		<content:encoded><![CDATA[<p>Great job. Only thing is I found myself calculating net memory usage of every line by subtracting previous line&#8217;s usage from its usage.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on line-by-line memory usage of a Python program by Christopher Brown</title>
		<link>http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/#comment-77159</link>
		<dc:creator>Christopher Brown</dc:creator>
		<pubDate>Wed, 25 Apr 2012 05:56:22 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1164#comment-77159</guid>
		<description>Very cool. (How) does it handle loops?</description>
		<content:encoded><![CDATA[<p>Very cool. (How) does it handle loops?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on line-by-line memory usage of a Python program by Kapil</title>
		<link>http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/#comment-77158</link>
		<dc:creator>Kapil</dc:creator>
		<pubDate>Wed, 25 Apr 2012 04:27:57 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1164#comment-77158</guid>
		<description>Seriously your forking a process for every line executed! insane.</description>
		<content:encoded><![CDATA[<p>Seriously your forking a process for every line executed! insane.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on line-by-line memory usage of a Python program by Drew</title>
		<link>http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/#comment-77157</link>
		<dc:creator>Drew</dc:creator>
		<pubDate>Tue, 24 Apr 2012 20:41:33 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1164#comment-77157</guid>
		<description>That is awesome! Nice work.</description>
		<content:encoded><![CDATA[<p>That is awesome! Nice work.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on line-by-line memory usage of a Python program by Justin</title>
		<link>http://fseoane.net/blog/2012/line-by-line-report-of-memory-usage/#comment-77156</link>
		<dc:creator>Justin</dc:creator>
		<pubDate>Tue, 24 Apr 2012 19:46:37 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1164#comment-77156</guid>
		<description>Cool.</description>
		<content:encoded><![CDATA[<p>Cool.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Low rank approximation by Mathieu</title>
		<link>http://fseoane.net/blog/2011/low-rank-approximation/#comment-75720</link>
		<dc:creator>Mathieu</dc:creator>
		<pubDate>Sun, 06 Nov 2011 19:17:35 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1128#comment-75720</guid>
		<description>Nice! Here&#039;s the compression rate for rank 50:

&gt;&gt;&gt; (600 * 50 + 50 + 50 * 400) * 1.0 / (600 * 400)
0.20854166666666665</description>
		<content:encoded><![CDATA[<p>Nice! Here&#8217;s the compression rate for rank 50:</p>
<p>&gt;&gt;&gt; (600 * 50 + 50 + 50 * 400) * 1.0 / (600 * 400)<br />
0.20854166666666665</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on qr_multiply function in scipy.linalg by Fabian</title>
		<link>http://fseoane.net/blog/2011/qr_multiply-function-in-scipy-linalg/#comment-75474</link>
		<dc:creator>Fabian</dc:creator>
		<pubDate>Thu, 03 Nov 2011 11:04:02 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1062#comment-75474</guid>
		<description>Hey,

The reason why it is so effective is because when LAPACK computes the QR factorization of a matrix it doesn&#039;t explicitly compute the Q matrix but stores it a compressed format they call ``elementary reflectors``. 

This function performs multiplication directly on those elementary reflectors, thus avoiding to compute the Q matrix explicitly. 

I don&#039;t think they implement the machinery for sparse matrices, but sounds feasible to implement a dense-sparse qr_multiply(A, v) function, where A is dense but v is sparse.</description>
		<content:encoded><![CDATA[<p>Hey,</p>
<p>The reason why it is so effective is because when LAPACK computes the QR factorization of a matrix it doesn&#8217;t explicitly compute the Q matrix but stores it a compressed format they call &#8220;elementary reflectors&#8220;. </p>
<p>This function performs multiplication directly on those elementary reflectors, thus avoiding to compute the Q matrix explicitly. </p>
<p>I don&#8217;t think they implement the machinery for sparse matrices, but sounds feasible to implement a dense-sparse qr_multiply(A, v) function, where A is dense but v is sparse.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on qr_multiply function in scipy.linalg by Mathieu</title>
		<link>http://fseoane.net/blog/2011/qr_multiply-function-in-scipy-linalg/#comment-75455</link>
		<dc:creator>Mathieu</dc:creator>
		<pubDate>Thu, 03 Nov 2011 06:34:17 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1062#comment-75455</guid>
		<description>That sounds very useful. Can you give more details how does it work? Would that work with sparse matrices too?</description>
		<content:encoded><![CDATA[<p>That sounds very useful. Can you give more details how does it work? Would that work with sparse matrices too?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on django, change language settings dynamically by green witch</title>
		<link>http://fseoane.net/blog/2009/django-change-language-settings-dynamically/#comment-74826</link>
		<dc:creator>green witch</dc:creator>
		<pubDate>Tue, 25 Oct 2011 12:12:35 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=160#comment-74826</guid>
		<description>Thanks a lot bro..</description>
		<content:encoded><![CDATA[<p>Thanks a lot bro..</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Computing the vector norm by Adam</title>
		<link>http://fseoane.net/blog/2011/computing-the-vector-norm/#comment-73197</link>
		<dc:creator>Adam</dc:creator>
		<pubDate>Tue, 04 Oct 2011 02:28:23 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=440#comment-73197</guid>
		<description>Thanks, this is a huge improvement.  Why isn&#039;t the numpy norm implemented that way?

Here&#039;s a test comparing the SCIPY BLAS, numpy, and &quot;dot&quot; routine speeds: &lt;a href=&quot;http://tinypic.com?ref=4qg10n&quot; rel=&quot;nofollow&quot;&gt;&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>Thanks, this is a huge improvement.  Why isn&#8217;t the numpy norm implemented that way?</p>
<p>Here&#8217;s a test comparing the SCIPY BLAS, numpy, and &#8220;dot&#8221; routine speeds: <a href="http://tinypic.com?ref=4qg10n" rel="nofollow"></a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Reworked example gallery for scikit-learn by Ralf</title>
		<link>http://fseoane.net/blog/2011/reworked-example-gallery-for-scikit-learn/#comment-71218</link>
		<dc:creator>Ralf</dc:creator>
		<pubDate>Fri, 09 Sep 2011 05:34:28 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=1017#comment-71218</guid>
		<description>That looks fantastic! I really need to find a reason to use scikit-learn more often:)</description>
		<content:encoded><![CDATA[<p>That looks fantastic! I really need to find a reason to use scikit-learn more often:)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A profiler for Python extensions by fabian</title>
		<link>http://fseoane.net/blog/2011/a-profiler-for-python-extensions/#comment-70829</link>
		<dc:creator>fabian</dc:creator>
		<pubDate>Mon, 05 Sep 2011 17:08:40 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=531#comment-70829</guid>
		<description>That info is useful, thanks!</description>
		<content:encoded><![CDATA[<p>That info is useful, thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on A profiler for Python extensions by Tyberius Prime</title>
		<link>http://fseoane.net/blog/2011/a-profiler-for-python-extensions/#comment-70803</link>
		<dc:creator>Tyberius Prime</dc:creator>
		<pubDate>Mon, 05 Sep 2011 09:52:10 +0000</pubDate>
		<guid isPermaLink="false">http://fseoane.net/blog/?p=531#comment-70803</guid>
		<description>Nevermind - doing &#039;google-pprof my_extension.so output.prof&#039; instead of &#039;google-pprof /usr/bin/python output.prof&#039; is what I should have been doing ;).</description>
		<content:encoded><![CDATA[<p>Nevermind &#8211; doing &#8216;google-pprof my_extension.so output.prof&#8217; instead of &#8216;google-pprof /usr/bin/python output.prof&#8217; is what I should have been doing <img src='http://fseoane.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
	</item>
</channel>
</rss>

