我已经在Google Cloud Platform上创建了一个SGE集群。我在python 2.7.5上安装了GridMap并尝试运行其示例python作业,可在此处找到 https://github.com/pygridtools/gridmap/tree/master/examples
两个示例仅创建了4个作业,这些作业计算各种阶乘并返回结果。当我尝试运行“ map_reduce.py”时,我在工作机上看到错误,提示“ ImportError:没有模块名称map_reduce”
我将错误隔离到zload调用中,该调用使用bz2解压缩,然后尝试使用pickle加载数据
def zloads(pickled_data):
"""
loads pickleable object from bz2 compressed string
:param pickled_data: BZ2 compressed byte sequence
:type pickled_data: bytes
:returns: An unpickled version of the compressed byte sequence.
"""
return pickle.loads(bz2.decompress(pickled_data))
“ pickled_data”对象来自zmq套接字调用中对“ recv”的调用
# Get reply
msg = zloads(zsocket.recv())
所有网格图代码都可以在此处找到
https://github.com/pygridtools/gridmap/tree/master/gridmap
感谢任何人可以提供的任何帮助或建议。 谢谢
答案 0 :(得分:0)
我想我找到了答案。我最终逐步浏览了pickle代码,因为它试图加载pickle文件。我注意到它正在尝试导入python模块,试图运行,在本例中为“ map_reduce”,以访问文件中定义的函数(“ compute_factorial”),但是它正在查找来自原始计算机的目录路径。因此,我尝试从所有工作人员都可以访问的共享目录运行该作业,并确保成功。
这对我来说是一个关于网格图如何工作的根本误解。我认为它实际上打包了python代码,并在工作机上运行了它。实际上,它似乎是一个包装指向该代码的指针,并且期望能够从工作机从同一目录路径访问它。