On Fri, Sep 4, 2009 at 3:31 AM, Fernando Perez <span dir="ltr">&lt;<a href="http://fperez.net">fperez.net</a>@<a href="http://gmail.com">gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<br>
The code below shows an implementation of a simple for  loop directly<br>
and via a decorator.  Both versions do the same thing, but the point<br>
is that by providing such decorators, we can *trivially* provide a<br>
GCD-style API for users to express their parallelism and have<br>
execution chunks handled by ipython remotely.<br></blockquote><div><br>Fascinating.  Let me ask some basic questions to see if I understand.<br><br>1.  Both loops do:  results = [None]*count<br><br>Is synchronization needed to update this array?<br>
<br>2. You call the decorator @for_each.  Would @parallel be more descriptive?<br><br>3. The docstring for for_each is:<br><br>
    &quot;&quot;&quot;This decorator-based loop does a normal serial run.<br>
    But in principle it could be doing the dispatch remotely,<br>   or into a thread pool, etc.<br>
    &quot;&quot;&quot;<br><br>So you are thinking that a call might be something like:<br><br>    def call(func):<br>        for i in iterable:<br>            &lt;&lt; create thread &gt;&gt;<br><br>And these threads would place their computations in the global results?<br>
<br>Edward<br>
</div></div>