2013-04-02 43 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)