Я новичок в ipyparallel
, и я хочу использовать этот пакет для реализации параллельных вычислений с помощью приложения для машинного обучения.IPython ipyparallel map_sync ImportError
Ниже приведено тестирование на ipyparallel
. Я определяю функцию с именем add
на файле func.py и главную функцию в файле test.py.
коды func.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
коды test.py являются:
#!/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.py, map_sync
может работать:
#!/usr/bin/env python
# coding=utf-8
#from func import add
from ipyparallel import Client
def add(*numbers):
numbers = list(numbers)
for i, n in enumerate(numbers):
numbers[i] = n + 1
return numbers
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 python test.py
[[2], [3], [4]]
[[2], [3], [4], [5]]
Интересно для map_sync
, как использовать функцию определения в другом файле? И как импортировать эти функции? Поскольку from py_file import func
не работает для map_sync
.