我想用IPython.parallel,当我定义它的时候 在IPython shell中,它完美地工作:
Type: function
Base Class: <type 'function'>
String Form:<function gradient at 0x3ae0398>
Namespace: Interactive
File: /root/<ipython-input-30-cf7eabdfef84>
Definition: gradient(w)
Source:
def gradient(w):
s = (1.0 + exp(y * (X * w)))**-1
return C*X.T*((1 - s) * y)
rc = Client()
rc[:].apply_sync(gradient, w)
...
但是,当我在模块中定义它并使用import时:
^{pr2}$此外,它在运行python2.7.2/ipython0.12的本地系统上运行良好,而 它在python2.7.2+/ipython0.12上崩溃,使用最新的Starcluster Ubuntu AMI。在
这是怎么回事?在
更新:我从github安装了ipython0.13.dev版本,现在可以正常工作了。在
区别在于模块全局变量。当在模块中定义函数时,全局名称空间就是模块的名称空间(即
mv.y
)。当该模块是__main__
,例如交互式定义的函数,则全局命名空间是引擎上的用户,并受execute("y=5")
的影响。在IPython提供了一个decorator,如果您想在模块中定义函数,这些函数的行为应该像是交互式定义的(可以作为全局变量访问用户名称空间):
您可以交互地执行以下操作:
^{pr2}$相关问题 更多 >
编程相关推荐