2013-03-01 76 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