2013-04-02 71 views
0

我有三個python文件,我們稱之爲master.py,slave1.pyslave2.py。現在slave1.pyslave2.py沒有任何功能,但需要使用相同的輸入(例如變量inp)做兩件不同的事情。模塊中的常見變量

我想要做的是從master調用兩個slave程序,並在master中指定一個輸入變量inp,所以我不必這樣做兩次。也因此我可以更改從站的輸出在一個主控程序等

我想保持兩個slave1.pyslave2.py獨立的代碼,所以如果需要的話,我可以單獨對其進行調試,但是當我嘗試做

#! /usr/bin/python 
# This is master.py 
import slave1 
import slave2 

inp = #some input 

兩個slave1slave2運行之前,我可以改變輸入。據我瞭解,python導入模塊的方式是先執行它們。但有什麼方法可以延遲執行它們,以便我可以指定通用輸入?或者有任何其他的方式來指定一個地方的兩個文件的輸入?

編輯:slave1slave2執行兩個不同的模擬給出一個特定的初始條件。由於兩者的輸出相同,因此我想以類似的方式顯示它們,並且可以控制要將模擬數據寫入哪些文件。所以我認爲將它們兩個導入主文件是最簡單的方法。

+0

您能詳細闡述一下您打算在從服務器上做什麼以及他們需要從主服務器獲得什麼輸入。看起來你現在正在生產意大利麪代碼。 – RickyA

回答

1

將代碼寫入您的從站模塊中作爲函數,導入函數,然後使用您需要的任何輸入調用master中的函數。如果您需要更多有狀態的信息,請考慮構建一個對象。

1

您可以在任何時候做進口:

inp = #some input 

import slave1 
import slave2 

注意,這通常被認爲是不好的設計 - 你會更好使模塊包含一個功能,而不是僅僅有當您導入它發生模塊。

1

它看起來像你的程序的架構不是最佳的。我想你有兩個文件,當你用python slave1.py運行它們時立即執行。這對腳本來說很好,但是當你導入它們時,你遇到了麻煩,就像你經歷過的那樣。

最好是包裹在從文件代碼的函數(如@ sr2222建議),並從master.py明確地調用這些:

slave1.py/ slave2.py

def run(inp): 
    #your code 

主的.py

import slave1, slave2 

inp = "foo" 
slave1.run(inp) 
slave2.run(inp) 

如果你一直希望能夠獨立運行的奴隸,你可以在最後這樣添加的東西:

if __name__ == "__main__": 
    inp = "foo" 
    run(inp)