<br><div class="gmail_quote">On Sat, Mar 5, 2011 at 11:31 AM, Antoine Pitrou <span dir="ltr"><<a href="mailto:solipsis@pitrou.net">solipsis@pitrou.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im"><br>
</div>That strikes me as a bad idea, because another module or library calling<br>
refresh_persons() has no clue that this implictly starts a separate<br>
thread (instead of being a "normal" method).<br>
<div><div></div><div class="h5"><br></div></div></blockquote><div><br></div><div>You can always call functions that don't do what you think. There's a common pattern for this:</div><div><br></div><div><font class="Apple-style-span" face="'courier new', monospace">    def foo(bar):</font></div>

<div><font class="Apple-style-span" face="'courier new', monospace">      return x(y(z(bar)))</font></div><div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div><div><font class="Apple-style-span" face="'courier new', monospace">    @threading.run_as_thread</font></div>

<div><font class="Apple-style-span" face="'courier new', monospace">    def foo_async(bar):</font></div><div><font class="Apple-style-span" face="'courier new', monospace">      return foo(bar)</font></div>

<div><br></div><br clear="all">--- Bruce<div><div>New Puzzazz newsletter: <a href="http://j.mp/puzzazz-news-2011-02" target="_blank">http://j.mp/puzzazz-news-2011-02</a></div><div>Make your web app more secure: <a href="http://j.mp/gruyere-security" target="_blank">http://j.mp/gruyere-security</a></div>

</div><div><br></div></div>