python并行命名空间问题

时间:2013-09-13 19:07:39

标签: python parallel-processing

我在简单的Python程序中遇到了命名空间的问题:任何人都可以指出我正确的方向

import numpy as np
import simple_sim
from IPython.parallel import Client

prescale_steps = np.linspace(0.5, 1.5, 101)
val = []

c = Client()
dview = c[:]
dview.execute('import simple_sim')
dview.execute('from numpy import *')
dview['prescale_steps'] = prescale_steps
dview['val'] = val

detuning_steps = np.linspace(-11,11,101)


def fid(det):
    for p in prescale_steps:
        tlist, ret =    simple_sim.simple_simulation(pulse_file='/home/andreas/Dropbox/puls25p8gn15map.mat', pulse_length=0.5, gamma=0, detuning=det, prescale=p)
        val.append(np.array([d,p,ret[-1]]))
    return val



lview = c.load_balanced_view()
res = lview.map(fid, detuning_steps)
a = res.get()
a = np.asarray(a)

总是引发错误:global name 'simple_sim' is not defined,虽然应该定义它不应该吗?

2 个答案:

答案 0 :(得分:2)

确保simple_sim在您的ipython引擎的路径中,而不仅仅是您的ipython shell。

即。如果在simple_sim.py~/mydir/,您需要在ipcluster start --n=4中运行~/mydir/或在~/mydir$PYTHON_PATH运行ipcluster }。

答案 1 :(得分:1)

不是100%肯定,但可能是simple_sim不在网站包中或与dview在同一文件夹中。换句话说,dview无法找到你的simple_sim模块,因此它会产生错误。但是,如果不是这种情况,我不确定是什么产生了这个错误。