2013-03-01 34 views
3

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

比方说,我有我想要运行的函数:

def myFunc(): 
    ... 

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

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

+1

它几乎听起来像你想要的http://pythonhosted.org/Pyro4/ – 2013-03-01 17:57:35

+0

百胜,远程代码执行。希望你真正确保你的连接。假设这是真的,但+1。 – 2013-03-01 17:58:45

回答

0

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

实例(服务器):

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) 

例(CLIENT):

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 

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

+0

但据我所知,不能腌制类,函数和方法! – ux11 2013-03-01 22:07:10

+0

这不起作用。它腌制对函数的引用,但该函数必须位于另一台机器上。 – tdelaney 2013-03-02 01:33:53

+0

好的..我编辑了我的答案。现在检查。 – Marek 2013-03-02 09:46:22

0

开箱即用并不那么容易。您需要远程计算机上的.py文件。但你可以用Python fabric来完成。

+0

我觉得我有点不清楚,但我不会运行“命令”,我想在另一台计算机上运行我的python函数(即算法),我该如何发送函数?看起来“结构”就像“远程系统管理”一样...... – ux11 2013-03-01 22:15:54

+0

@ ux11您可以将您在一个晶圆厂文件中定义的功能发送给其他机器。它们可以用于系统管理或其他目的。 – tdelaney 2013-03-02 01:28:43