我想使用仅在远程rpyc服务器上可访问的python模块。以下两种访问远程计算机上模块的方式之间是否有区别:

客户端上的“””:“””


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



服务器端的“””:“””

def exposed_a_func_returning_the_module_ref()
    import my_remote_module_name
    return my_remote_module_name


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

最佳答案

这是此getmodule的实现:

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


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

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

我猜想getmodule是开箱即用的,因为它非常有用,因此您不必显式定义它(或类似的东西)即可实现此目标。

关于python - rpyc:root.getmodule(“module_name”)和手动返回模块引用之间的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31388872/

10-12 18:51