【问题标题】:Sending function pointer over network in python在python中通过网络发送函数指针
【发布时间】:2013-02-16 07:37:12
【问题描述】:

是否有可能通过网络在 python 中发送函数指针以在另一台机器上运行?

假设我有一个想要运行的函数:

def myFunc():
  ...

是否可以使用函数指针将 myFunc 发送到另一台机器,或者函数指针仅在本地可用? 如果这是不可能的,我还有什么其他选择?发送 python 文件?

我对 python 中的网络如何工作不感兴趣,因为那部分已经完全实现了。

【问题讨论】:

  • 听起来你想要pythonhosted.org/Pyro4
  • 嗯,远程代码执行。希望您真的真正保护了您的连接。假设这是真的,+1。

标签: python function networking pointers distributed


【解决方案1】:

您是否考虑过腌制您的功能并通过网络发送?

示例(服务器):

import pickle

def test1():        #Function to be send
    return True


with open('data.pickle', 'wb') as f:    #On server you pickling function
    pickle.dump(test1.__code__, f)

示例(客户):

import pickle
import types

with open('data.pickle', 'rb') as f:    #On client you load and unpickle function
    code = pickle.load(f)

test2 = types.FunctionType(code, globals())


print(test2())    #Result will be True

注意:请注意通过网络发送代码时可能出现的安全问题。

【讨论】:

  • 但据我所知类、函数、方法不能腌制!
  • 这不起作用。它腌制对该函数的引用,但该函数必须在另一台机器上。
【解决方案2】:

开箱即用并不容易。您需要远程计算机上的 .py 文件。但是您可以使用Python fabric 来做到这一点。

【讨论】:

  • 我想我有点不清楚,但我不会运行“命令”,我想在另一台计算机上运行我的 python 函数(即算法),我如何发送函数?似乎“结构”就像“远程系统管理”......
  • @ux11 您可以将您在 fab 文件中定义的函数发送到其他机器。它们可用于系统管理或其他目的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 2017-09-26
  • 1970-01-01
  • 2018-08-13
  • 2011-08-02
  • 1970-01-01
相关资源
最近更新 更多