IPython ipyparallel地图

IPython ipyparallel地图,python,ipython-parallel,Python,Ipython Parallel,我是ipyparallel的新手,我想用这个软件包在我的机器学习应用程序中实现并行计算 下面是对ipyparallel的测试,我在func.py文件中定义了一个名为add的函数,并在test.py文件中定义了main函数 功能代码为: #!/usr/bin/env python # coding=utf-8 def add(*numbers): numbers = list(numbers) for i, n in enumerate(numbers): num

我是ipyparallel的新手,我想用这个软件包在我的机器学习应用程序中实现并行计算

下面是对ipyparallel的测试,我在func.py文件中定义了一个名为add的函数,并在test.py文件中定义了main函数

功能代码为:

#!/usr/bin/env python
# coding=utf-8

def add(*numbers):
    numbers = list(numbers)
    for i, n in enumerate(numbers):
        numbers[i] = n + 1
    return numbers
#!/usr/bin/env python
# coding=utf-8

from func import add
from ipyparallel import Client

if __name__ == '__main__':
    rc = Client(
        '/home/fit/.ipython/profile_default/security/ipcontroller-client.json')

    print map(add, [1, 2, 3]
    print rc[0].map_sync(add, [1, 2, 3, 4])
test.py的代码是:

#!/usr/bin/env python
# coding=utf-8

def add(*numbers):
    numbers = list(numbers)
    for i, n in enumerate(numbers):
        numbers[i] = n + 1
    return numbers
#!/usr/bin/env python
# coding=utf-8

from func import add
from ipyparallel import Client

if __name__ == '__main__':
    rc = Client(
        '/home/fit/.ipython/profile_default/security/ipcontroller-client.json')

    print map(add, [1, 2, 3]
    print rc[0].map_sync(add, [1, 2, 3, 4])
因为您知道map可以无错误地运行,但是当运行map_sync时,命令行返回:

☁  test  python test.py 
[[2], [3], [4]]
Traceback (most recent call last):
  File "test.py", line 14, in <module>
    print rc[0].map_sync(add, [1, 2, 3, 4])
  File "/usr/local/lib/python2.7/dist-packages/ipyparallel/client/view.py", line 353, in map_sync
    return self.map(f,*sequences,**kwargs)
  File "<string>", line 2, in map
  File "/usr/local/lib/python2.7/dist-packages/ipyparallel/client/view.py", line 54, in sync_results
    ret = f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/ipyparallel/client/view.py", line 618, in map
    return pf.map(*sequences)
  File "/usr/local/lib/python2.7/dist-packages/ipyparallel/client/remotefunction.py", line 268, in map
    ret = self(*sequences)
  File "<string>", line 2, in __call__
  File "/usr/local/lib/python2.7/dist-packages/ipyparallel/client/remotefunction.py", line 75, in sync_view_results
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/ipyparallel/client/remotefunction.py", line 251, in __call__
    return r.get()
  File "/usr/local/lib/python2.7/dist-packages/ipyparallel/client/asyncresult.py", line 104, in get
    raise self._exception
ipyparallel.error.CompositeError: one or more exceptions from call to method: add
[0:apply]: ImportError: No module named func
结果是:

☁  test  python test.py
[[2], [3], [4]]
[[2], [3], [4], [5]]

我想知道map_sync如何使用其他文件中定义的函数?如何导入这些函数?由于“从py_文件导入”功能不适用于映射同步。

所需的模块应为复制或,您可以将模块推送到引擎机器上,并且应在引擎机器上安装三方软件包,否则将发生导入错误

但是,在运行程序时,您应该运行:

$ ipcontroller --ip=client_ip --reuse
在客户端计算机上,将在/home/user/.ipython/profile\u default/security目录中生成2个文件

$ ls /home/user/.ipython/profile_default/security 
ipcontroller-client.json  ipcontroller-engine.json
因此,必须将ipcontroller-client.json和ipcontroller-engine.json复制到引擎机器并运行

在引擎机器上,因此建立了并行计算环境

接下来,您可以定义并行计算任务并运行程序