我想使用仅在远程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/