<br><br><div class="gmail_quote">On Fri, Oct 21, 2011 at 14:44, Toby Burnett <span dir="ltr">&lt;<a href="mailto:tburnett@uw.edu">tburnett@uw.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">







<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal">Hi, I’m converting to the new parallel scheme, very nice.<u></u><u></u></p>
<p class="MsoNormal">I start a number of tasks with the lview.map, and would like to be able to extract some results from finished tasks before they all finish. The AsyncMapResult object does not seem to allow that, however. It is a list with an entry for each
 task, but no way that I could find to get the metadata for a finished task before all had finished. Am I missing something? Doing this the wrong way?</p></div></div></blockquote><div><br></div><div>AsyncMapResult is *iterable* before everything is done, but you can&#39;t do index-access until they are all done:</div>

<div><br></div><div>amr = view.map(myfunc, myargs)</div><div><br></div><div>for result in amr:</div><div>    dostuff(result) # this is the actual return value of myfunc(myargs[i])</div><div><br></div><div>Or, for a full toy example, load-balanced, super-slow RMS with intermediate status updates:</div>

<div><br></div><div><span style="background-color: transparent; ">from random import random</span></div><div>from IPython import parallel</div><div><br></div><div>rc = parallel.Client()</div><div>v = rc.load_balanced_view()</div>

<div><br></div><div><div>def slow_square(x):</div><div>    import time</div><div>    time.sleep(1)</div><div>    return x*x</div></div><div><br></div><div>amr = v.map_async(slow_square, randoms)</div><div><br></div><div>
<div>
sum_sq=0</div><div>for n,r in enumerate(amr):</div><div>    sum_sq += r</div><div>    print &quot;intermediate rms %i: %.3f&quot; % (n, sqrt(sum_sq / (n+1)))</div><div><br></div></div><div>Since the AsyncMapResult object is just an iterable of its results, you can just use it with builtin functions like sum(amr), reduce(func, amr), map(process_result, amr) etc.  These functions will advance step by step as results arrive.</div>

<div><br></div><div>-MinRK</div><div><span style="background-color: transparent; "><br></span></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div lang="EN-US" link="blue" vlink="purple">

<div><p class="MsoNormal">
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p><font color="#888888">
<p class="MsoNormal">--Toby Burnett<u></u><u></u></p>
</font></div>
</div>

<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>
<br></blockquote></div><br>