The purge_results function fixed my problem. Specifically, I used<div><br></div><div>    rc.purge_results(&#39;all&#39;)</div><div><br></div><div>In case it is helpful to anyone, I have been clearing all caches (that I know of) with the following routine</div>
<div><br></div><div><div>    def clear_cache(rc, dview):</div><div>        rc.purge_results(&#39;all&#39;) #clears controller                                                                                                               </div>
<div>        rc.results.clear()</div><div>        rc.metadata.clear()</div><div>        dview.results.clear()</div><div>        assert not rc.outstanding, &quot;don&#39;t clear history when tasks are outstanding&quot;</div>
<div>        rc.history = []</div><div>        dview.history = []</div><br><div class="gmail_quote">On Tue, Jul 10, 2012 at 8:26 AM, MinRK <span dir="ltr">&lt;<a href="mailto:benjaminrk@gmail.com" target="_blank">benjaminrk@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The *Controller* is running out of memory, and you are clearing the<br>
cache on the Client side.  If you are not using the extra delayed<br>
result retrieval functionality, you can disable the Hub database,<br>
which should put a stop to Hub memory growth.<br>
<br>
You can do this at the command-line with:<br>
<br>
ipcontroller --nodb<br>
<br>
Or permanently in ipcontroller_config.py:<br>
<br>
HubFactory.db_class = &#39;NoDB&#39;<br>
<br>
This is now the default in 0.13, as the db backend is not commonly used.<br>
<br>
If you are using the Hub&#39;s extra facilities, you can instruct it to<br>
drop results with:<br>
<br>
client.purge_results()<br>
<br>
-MinRK<br>
<div><div class="h5"><br>
On Fri, Jul 6, 2012 at 3:56 PM, Robert Nishihara<br>
&lt;<a href="mailto:robertnishihara@gmail.com">robertnishihara@gmail.com</a>&gt; wrote:<br>
&gt; I&#39;m running multiple trials of the same experiment in a for loop.<br>
&gt;<br>
&gt;     for i in range(10):<br>
&gt;         run_experiment()<br>
&gt;<br>
&gt; It behaves properly for the first several trials. Then it fails with the<br>
&gt; error (this error goes to the controller&#39;s standard error)<br>
&gt;<br>
&gt;     MemoryError<br>
&gt;     FATAL ERROR: OUT OF MEMORY (epoll.cpp:57)<br>
&gt;<br>
&gt; I&#39;ve read this thread<br>
&gt; &lt;<a href="http://mail.scipy.org/pipermail/ipython-user/2012-March/009687.html" target="_blank">http://mail.scipy.org/pipermail/ipython-user/2012-March/009687.html</a>&gt;, and<br>
&gt; so I am already clearing the caches between trials with this subroutine<br>
&gt;<br>
&gt;     def clear_cache(rc, dview):<br>
&gt;         rc.results.clear()<br>
&gt;         rc.metadata.clear()<br>
&gt;         dview.results.clear()<br>
&gt;         assert not rc.outstanding, &quot;don&#39;t clear history when tasks are<br>
&gt; outstanding&quot;<br>
&gt;         rc.history = []<br>
&gt;         dview.history = []<br>
&gt;<br>
&gt; But given that the memory error occurs after multiple successful trials, it<br>
&gt; seems like something must be accumulating. Are there other sources of<br>
&gt; caching that I&#39;m missing? Is anything cached on the engines for instance? I<br>
&gt; do not store my results between trials, I use cPickle to dump them to files.<br>
&gt;<br>
&gt; -Robert<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; The full error from the controller&#39;s standard error is included below<br>
&gt; ----------------------------<br>
&gt;<br>
&gt; ERROR:root:Uncaught exception, closing connection.<br>
&gt; Traceback (most recent call last):<br>
&gt;   File<br>
&gt; &quot;/software/linux/x86_64/epd-7.3-1/lib/python2.7/site-packages/zmq/eventloop/zmqstream.py&quot;,<br>
&gt; line 391, in _handle_events<br>
&gt;     self._handle_recv()<br>
&gt;   File<br>
&gt; &quot;/software/linux/x86_64/epd-7.3-1/lib/python2.7/site-packages/zmq/eventloop/zmqstream.py&quot;,<br>
&gt; line 412, in _handle_recv<br>
&gt;     msg = self.socket.recv_multipart(zmq.NOBLOCK, copy=self._recv_copy)<br>
&gt;   File &quot;socket.pyx&quot;, line 723, in zmq.core.socket.Socket.recv_multipart<br>
&gt; (zmq/core/socket.c:6495)<br>
&gt;   File &quot;socket.pyx&quot;, line 616, in zmq.core.socket.Socket.recv<br>
&gt; (zmq/core/socket.c:5961)<br>
&gt;   File &quot;socket.pyx&quot;, line 650, in zmq.core.socket.Socket.recv<br>
&gt; (zmq/core/socket.c:5832)<br>
&gt;   File &quot;socket.pyx&quot;, line 120, in zmq.core.socket._recv_copy<br>
&gt; (zmq/core/socket.c:1681)<br>
&gt;   File &quot;message.pyx&quot;, line 75, in zmq.core.message.copy_zmq_msg_bytes<br>
&gt; (zmq/core/message.c:1082)<br>
&gt; MemoryError<br>
&gt; ERROR:root:Exception in I/O handler for fd &lt;zmq.core.socket.Socket object at<br>
&gt; 0x162a6b0&gt;<br>
&gt; Traceback (most recent call last):<br>
&gt;   File<br>
&gt; &quot;/software/linux/x86_64/epd-7.3-1/lib/python2.7/site-packages/zmq/eventloop/ioloop.py&quot;,<br>
&gt; line 330, in start<br>
&gt;     self._handlers[fd](fd, events)<br>
&gt;   File<br>
&gt; &quot;/software/linux/x86_64/epd-7.3-1/lib/python2.7/site-packages/zmq/eventloop/zmqstream.py&quot;,<br>
&gt; line 391, in _handle_events<br>
&gt;     self._handle_recv()<br>
&gt;   File<br>
&gt; &quot;/software/linux/x86_64/epd-7.3-1/lib/python2.7/site-packages/zmq/eventloop/zmqstream.py&quot;,<br>
&gt; line 412, in _handle_recv<br>
&gt;     msg = self.socket.recv_multipart(zmq.NOBLOCK, copy=self._recv_copy)<br>
&gt;   File &quot;socket.pyx&quot;, line 723, in zmq.core.socket.Socket.recv_multipart<br>
&gt; (zmq/core/socket.c:6495)<br>
&gt;   File &quot;socket.pyx&quot;, line 616, in zmq.core.socket.Socket.recv<br>
&gt; (zmq/core/socket.c:5961)<br>
&gt;   File &quot;socket.pyx&quot;, line 650, in zmq.core.socket.Socket.recv<br>
&gt; (zmq/core/socket.c:5832)<br>
&gt;   File &quot;socket.pyx&quot;, line 120, in zmq.core.socket._recv_copy<br>
&gt; (zmq/core/socket.c:1681)<br>
&gt;   File &quot;message.pyx&quot;, line 75, in zmq.core.message.copy_zmq_msg_bytes<br>
&gt; (zmq/core/message.c:1082)<br>
&gt; MemoryError<br>
&gt; FATAL ERROR: OUT OF MEMORY (epoll.cpp:57)<br>
&gt; /usr/share/gridengine/hpc/spool/cloudcompute-5/job_scripts/1998: line 14:<br>
&gt; 31003 Aborted                 (core dumped) ipcontroller --profile=sge<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; IPython-User mailing list<br>
&gt; <a href="mailto:IPython-User@scipy.org">IPython-User@scipy.org</a><br>
&gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-user" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-user</a><br>
&gt;<br>
_______________________________________________<br>
IPython-User mailing list<br>
<a href="mailto:IPython-User@scipy.org">IPython-User@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-user" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-user</a><br>
</blockquote></div><br></div>