从另一个Python脚本中并行启动IPython
假设我有两个Python文件 test.py从另一个Python脚本中并行启动IPython,python,ipython,ipython-parallel,Python,Ipython,Ipython Parallel,假设我有两个Python文件 test.py from ipyparallel import Client def hi(a): return b + (a * 2) def run(): b = 3 client = Client() view = client[:] view.push({'b':b}) results = view.map(hi, [0,1,2,3,4]) for r in results: p
from ipyparallel import Client
def hi(a):
return b + (a * 2)
def run():
b = 3
client = Client()
view = client[:]
view.push({'b':b})
results = view.map(hi, [0,1,2,3,4])
for r in results:
print(r)
from test import run
if __name__ == '__main__':
run()
和driver.py
from ipyparallel import Client
def hi(a):
return b + (a * 2)
def run():
b = 3
client = Client()
view = client[:]
view.push({'b':b})
results = view.map(hi, [0,1,2,3,4])
for r in results:
print(r)
from test import run
if __name__ == '__main__':
run()
我收到错误[0:apply]:name错误:未定义名称“b”
如果我从test.py中调用run(),这段代码就可以工作,但是,我不想这样做。我想从driver.py中调用run()。有关如何解决此问题的任何想法?在
test.py
文件导入interactive
,然后在map
函数中使用interactive(hi)
而不是hi
:
from ipyparallel import Client
from ipyparallel.util import interactive
def hi(a):
global b
return b + (a * 2)
def run():
b = 3
client = Client()
view = client[:]
view.push({'b':b})
results = view.map(interactive(hi), [0,1,2,3,4])
for r in results:
print(r)
if __name__ == '__main__':
run()
可能重复的