我试图让ipyparallel工作。我跟随Getting Stared guide,但基本功能不在我的机器上工作。
我从命令行启动一个集群
ipcluster start -n 4
然后我运行脚本:
import ipyparallel as ipp
c=ipp.Client()
print(c[:].apply_sync(lambda : "Hello, World"))
在Python3中,它按预期工作,但在Python2中运行时则不行。我收到错误:
TypeError: an integer is required (got type str)
此外,当我在Jupyter笔记本中运行代码段时,同时使用python 2和3内核,我得到了同样的错误。
为什么我收到此错误的任何想法?谢谢。
jupyter中的总错误是:
Traceback (most recent call last)~/.local/lib/python3.5/site-packages/ipyparallel/serialize/serialize.py in unpack_apply_message(bufs, g, copy)
185 assert len(bufs) >= 2, "not enough buffers!"
186 pf = buffer_to_bytes_py2(bufs.pop(0))
--> 187 f = uncan(pickle.loads(pf), g)
188 pinfo = buffer_to_bytes_py2(bufs.pop(0))
189 info = pickle.loads(pinfo)
~/.local/lib/python3.5/site-packages/ipyparallel/serialize/codeutil.py in code_ctor(*args)
22
23 def code_ctor(*args):
---> 24 return types.CodeType(*args)
25
26 def reduce_code(co):
TypeError: an integer is required (got type str)
我使用Python3.5.2和Python2.7.12,使用ipyparallel v6.0.2。我已经在某个地方看到了ipyparallel v6并不需要> Python3,虽然我无法在docs中看到这一点,所以我很乐意让这个只能工作对于Python3。
答案 0 :(得分:0)
这里的问题是我没有在jupyter中启用集群。在终端,我跑了
sudo ipcluster nbextension enable
并在同一个终端打开了jupyter笔记本
jupyter notebook
然后它奏效了。
注意您可能首先需要
pip install notebook ipyparallel
另请参阅this page在jupyter中使用ipcluster
。