运行示例

时间:2018-10-22 19:15:02

标签: python cluster-computing pickle sungridengine

我已经在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

感谢任何人可以提供的任何帮助或建议。 谢谢

1 个答案:

答案 0 :(得分:0)

我想我找到了答案。我最终逐步浏览了pickle代码,因为它试图加载pickle文件。我注意到它正在尝试导入python模块,试图运行,在本例中为“ map_reduce”,以访问文件中定义的函数(“ compute_factorial”),但是它正在查找来自原始计算机的目录路径。因此,我尝试从所有工作人员都可以访问的共享目录运行该作业,并确保成功。

这对我来说是一个关于网格图如何工作的根本误解。我认为它实际上打包了python代码,并在工作机上运行了它。实际上,它似乎是一个包装指向该代码的指针,并且期望能够从工作机从同一目录路径访问它。

相关问题