<br><br><div class="gmail_quote">On Wed, Nov 10, 2010 at 11:20 AM, Robert Kern <span dir="ltr">&lt;<a href="mailto:robert.kern@gmail.com">robert.kern@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;">
<div class="im">On 11/10/10 11:33 AM, Brian Granger wrote:<br>
&gt; John,<br>
&gt;<br>
&gt; On Tue, Nov 9, 2010 at 2:18 AM, John Reid &lt;<a href="mailto:j.reid@mail.cryst.bbk.ac.uk">j.reid@mail.cryst.bbk.ac.uk</a><br>
</div><div class="im">&gt; &lt;mailto:<a href="mailto:j.reid@mail.cryst.bbk.ac.uk">j.reid@mail.cryst.bbk.ac.uk</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;     Hi,<br>
&gt;<br>
&gt;     I&#39;m having some problems returning named tuples from a multi-engine<br>
&gt;     client. I do something like:<br>
&gt;<br>
&gt;     from IPython.kernel import client<br>
&gt;     mec = client.MultiEngineClient()<br>
&gt;<br>
&gt;     @mec.parallel()<br>
&gt;     def parallel_get_starts(arg):<br>
&gt;     &lt;do some work&gt;<br>
&gt;          return &lt;some named tuples&gt;<br>
&gt;<br>
&gt;     results = parallel_get_starts(&lt;some list&gt;)<br>
&gt;<br>
&gt;<br>
&gt;     but I always get errors like:<br>
&gt;     TypeError: __new__() takes exactly 8 arguments (2 given)<br>
&gt;<br>
&gt;<br>
&gt; Hmm, that is an odd error that I have never seen.  Even the fact that it is a<br>
&gt; TypeError is odd to me.  A couple of things to look at:<br>
&gt;<br>
&gt; * Make sure that named tuples can be pickled and unpickled.<br>
<br>
</div>namedtuple objects can be pickled, but you have to be particularly careful.<br>
Creating a namedtuple type at the prompt and then trying to send that over won&#39;t<br>
work because the type won&#39;t be available on the other side. IPython&#39;s FakeModule<br>
will cause more complications. Creating a namedtuple type inside of a function<br>
is even worse since the pickle cannot address it by name. If you create the<br>
namedtuple type in a real module that is available to both interpreters, it will<br>
probably work.<br>
<div class="im"><br></div></blockquote><div><br></div><div>Robert makes good points.  You do have to make sure types are in modules when using IPython.  I would put namedtuple in a module, and then make sure you import that module in both the client and engine namespaces.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">
&gt; * See if you can come up with a super simple example that displays this error<br>
&gt; (isolate it).<br>
&gt; * See if you can figure out where the TypeError is coming from.<br>
<br>
</div>It is possible that there is a name collision.<br>
<font color="#888888"><br></font></blockquote><div><br></div><div>Yes, that sounds plausible.  Putting namedtuple in a module will also help any name collisions.</div><div><br></div><div>Brian</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<font color="#888888">
--<br>
Robert Kern<br>
<br>
&quot;I have come to believe that the whole world is an enigma, a harmless enigma<br>
  that is made terrible by our own mad attempt to interpret it as though it had<br>
  an underlying truth.&quot;<br>
   -- Umberto Eco<br>
</font><div><div></div><div class="h5"><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>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Brian E. Granger, Ph.D.<br>Assistant Professor of Physics<br>Cal Poly State University, San Luis Obispo<br><a href="mailto:bgranger@calpoly.edu">bgranger@calpoly.edu</a><br>
<a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a><br>