我遇到了这个问题,即ipyparallel dict
中涉及的任何map
字面值都缺失,并且在输出结果中变为{}
。
此问题不会影响通过update
方法和dict构造函数添加的dict项目。
要重现此问题,您可以启动一个名为direct view
的{{1}}群集。下面的代码在IPython中使用Python 3.4(客户端和引擎)进行了测试。
dview
当您希望dview.map(lambda x: {'label': x*2}, range(4)}
键出现在词典中时,它会返回[{}, {}, {}, {}]
。
在以下情况下也会出现同样的问题:
label
的参数)答案 0 :(得分:0)
不确定这是否适用于您的python 3.4问题,但是当我在python 2.7.9上运行您的代码时,map
方法会生成异步对象而不是字典。为了使用map
方法获取字典,我必须使用列表推导来迭代异步对象。然而,map_sync
方法可以正常工作。
如果你想在远程群集上试用它(插入适当的json文件),这是一段代码片段:
from IPython.parallel import Client
c = Client()
dview = c[:]
smap = dview.map_sync(lambda x: {'label': x*2}, range(4))
print(smap) #gives dict
amap = dview.map(lambda x: {'label': x*2}, range(4))
print(amap) #produces async obj
amap_dict = [r for i,r in enumerate(amap)]
print(amap_dict) #gives dict
有关异步对象的更多信息:https://ipython.org/ipython-doc/2/parallel/asyncresult.html#map-results-are-iterable