需要整数(得到类型str):使用ipyparallel和jupyter

时间:2018-01-16 18:31:18

标签: python ipython jupyter

我试图让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。

1 个答案:

答案 0 :(得分:0)

这里的问题是我没有在jupyter中启用集群。在终端,我跑了

sudo ipcluster nbextension enable

并在同一个终端打开了jupyter笔记本

jupyter notebook

然后它奏效了。

注意您可能首先需要

pip install notebook ipyparallel

另请参阅this page在jupyter中使用ipcluster