<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>On Aug 16, 2012, at 9:19 AM, seshu yamajala wrote:</div><div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>On Aug 15, 2012, at 9:09 PM, seshu yamajala wrote:</div><div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Aug 15, 2012, at 8:39 PM, MinRK wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><br><br><div class="gmail_quote">On Wed, Aug 15, 2012 at 4:29 PM, seshu yamajala <span dir="ltr">&lt;<a href="mailto:syamajala@gmail.com" target="_blank">syamajala@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">

Hello,<br>
<br>
I was wondering what the proper way to share data between engines is when your functions are defined in a module which is imported on all the engines. I have a function in my module which computes a dict and pushes that dict to all the engines, but when i try to access that dict from another function in the module it says that the global name is undefined. Looking at the code for push, I saw that it was decorated with @interactive. Is there another way to do this?<br>

</blockquote><div><br></div><div>It all depends on what you want to do. &nbsp;The user_ns is effectively __main__.__dict__, so when you push/pull that is the namespace you are working with.</div><div><br></div><div>The @interactive decorator only makes the serialization code think that a function defined in a module is actually defined in the interactive namespace. &nbsp;This means that when it is unpacked on the engine, its `globals` will refer to the user namespace rather than the module namespace.</div>

<div><br></div><div><a href="http://stackoverflow.com/questions/10857250/python-name-space-issues-with-ipython-parallel">A more thorough explanation</a>.</div><div><br></div><div>Personally, I don't find global state of modules terribly attractive, so I prefer to use parallel.Reference(name) objects as arguments to a largely functional API, e.g.</div></div></blockquote><blockquote type="cite"><div class="gmail_quote">

<div><br></div><div>def foo(x):</div><div>&nbsp; &nbsp; return x * x</div><div><br></div><div>A = numpy.ones(128)</div><div>rc[:]['A'] = A</div><div><br></div><div>rA = parallel.Reference('A')</div><div>ar = view.apply_async(foo, rA)</div>

<div>&nbsp;</div><div>-MinRK</div><div><br></div></div></blockquote><div><br></div><div>Reference works for me. Thanks!</div></div></div></blockquote><div><br></div><div>What if I want to call a method of an object that is Referenced on an engine? getObject() doesn't seem to work.</div></div></div></blockquote><div><br></div><div><br></div><div><br></div><div>My mistake. In this case I was using Reference incorrectly. I should have passed a Reference to the function I wanted to call the object's method in, instead of trying to use Reference in the function itself. Everything is well now.&nbsp;</div><div><br></div><div>Thanks,</div><div>Seshu</div><div><br></div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>Thanks,</div><div>Seshu</div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><br></div><div>Seshu</div><br><blockquote type="cite"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks,<br>
Seshu Yamajala<br>
<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>
</blockquote></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">http://mail.scipy.org/mailman/listinfo/ipython-user</a><br></blockquote></div><br></div></blockquote></div><br></div></blockquote></div><br></body></html>