<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Aug 12, 2014 at 12:38 AM, Fernando Perez <span dir="ltr"><<a href="mailto:fperez.net@gmail.com" target="_blank">fperez.net@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div class="">On Mon, Aug 11, 2014 at 6:56 AM, Wes Turner <span dir="ltr"><<a href="mailto:wes.turner@gmail.com" target="_blank">wes.turner@gmail.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="overflow:hidden">This [2] seems to suggest that anything that isn't a buffer,<br>


str/bytes, or numpy array is pickled and copied.<br></div></blockquote><div><br></div></div><div>That is indeed correct.</div><div class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div style="overflow:hidden">
Would it be faster to ETL into something like HDF5 (e.g. w/<br>
Pandas/PyTables) and just synchronize the dataset URI?</div></blockquote></div></div><br>Absolutely.</div><div class="gmail_extra"><br></div><div class="gmail_extra">IPython.parallel is NOT the right tool to use to move large amounts of data around between machines. It's an important problem in parallel/distributed computing, but also a very challenging one that is beyond our scope and resources.</div>
</div></blockquote><div><br></div><div>As I said, I didn't move anything between machines, just locally. Still it uses ZMQ and I get that IPython is not meant to handle this situation. Simply using a shelve (relying on pickle here) and loading the contents in each kernel already improved the time needed a lot.<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">

<div class="gmail_extra"><br></div><div class="gmail_extra">When using IPython.parallel, you should think of it as a good way to </div><div class="gmail_extra"><br></div><div class="gmail_extra">- coordinate computation</div>


<div class="gmail_extra">- move code around</div><div class="gmail_extra">- move *small* data around</div><div class="gmail_extra">- have interactive control in parallel settings</div><div class="gmail_extra"><br></div><div class="gmail_extra">


But you should have a non-IPython strategy for moving big chunks of data around. The right answer to that question will vary from one context to another. In some cases a simple NFS mount may be enough, elsewhere something like Hadoop FS or Disco FS may work, or a well-sharded database, or whatever.</div>


<div class="gmail_extra"><br></div><div class="gmail_extra">But it's simply a problem that we consider orthogonal to what IPython.parallel can do well.</div><div class="gmail_extra"><br></div><div class="gmail_extra">


Hope this helps,</div><div class="gmail_extra"><br></div><div class="gmail_extra">f<span class="HOEnZb"><font color="#888888"><br><br clear="all"></font></span></div></div></blockquote><div>Thank you for your input. <br>
</div></div></div></div>