我开始尝试使用 IPython 并行工具并遇到问题。我用以下命令启动我的 python 引擎:
ipcluster start -n 3
然后下面的代码运行良好:
from IPython.parallel import Client
def dop(x):
rc = Client()
dview = rc[:]
dview.block=True
dview.execute('a = 5')
dview['b'] = 10
ack = dview.apply(lambda x: a+b+x, x)
return ack
ack = dop(27)
print ack
返回 [42, 42, 42] 应该的。但是如果我将代码分成不同的文件:dop.py:
from IPython.parallel import Client
def dop(x):
rc = Client()
dview = rc[:]
dview.block=True
dview.execute('a = 5')
dview['b'] = 10
print dview['a']
ack = dview.apply(lambda x: a+b+x, x)
return ack
并尝试以下操作:
from dop import dop
ack = dop(27)
print ack
我从每个引擎得到错误:
[0:apply]: NameError: global name 'a' is not defined
[1:apply]: NameError: global name 'a' is not defined
[2:apply]: NameError: global name 'a' is not defined
我不明白...为什么我不能将函数放在不同的文件中并导入它?