rpyc:root.getmodule(“module_name”)与手动返回模块引用之间的区别?

时间:2015-07-13 16:40:39

标签: python python-import rpyc

我想使用只能在远程rpyc服务器上访问的python模块。以下两种访问远程计算机上的模块的方法有何不同:


“”在客户端:“”“

  1. my_local_mod_ref = my_rpyc_connection.root.getmodule("remote_module_name")
  2. my_local_mod_ref = my_rpyc_connection.root.a_func_returning_the_module_ref()

  3. “”在服务器端:“”“

    def exposed_a_func_returning_the_module_ref()
        import my_remote_module_name
        return my_remote_module_name
    

    如果存在差异,两种替代方案中的哪一种更清洁或更可取?

1 个答案:

答案 0 :(得分:2)

以下是此getmodule

的实现
def exposed_getmodule(self, name):
    """imports an arbitrary module"""
    return __import__(name, None, None, "*")

如您所见,如果模块尚未加载到服务器中,则调用getmodule导入它,并且(无论哪种方式)返回对象模块的netref。

如果这符合您a_func_returning_the_module_ref()的行为,则没有区别。

我认为getmodule是开箱即用的,因为非常有用,所以你不必明确地定义它(或类似的东西)以实现这个目标。