2013-01-18 175 views
0

我的python脚本有奇怪的行为。所以,我有python脚本A,它多次调用另一个脚本B.对于拨打B,我正在使用子进程模块。脚本A的Python子流程模块 - 变量范围

摘录:

for i in range(0,10000): 
    parameters = [] 
    parameters.append("B") 
    result = subprocess.call(parameters) 

片段脚本B的:

testdata = some_logic 
if testdata: 
    function_1() 
else: 
    function_2() 

因此,脚本一会调用脚本B多次。经过一些测试后,我发现变量testdata对于当前运行脚本B没有预期值。难道在运行脚本B时,该变量testdata具有来自先前调用B的值吗?在这种情况下变量testdata的范围是什么?谢谢你的建议。欢呼声

+1

请注意,您可能需要更改标题。 'mutliprocessing'是一个完全不同的模块,只需要一点点努力,你就可以在进程之间共享状态。 – mgilson

回答

4

subprocess.call启动子进程。该进程不知道A中发生了什么,或者它已被调用了多少次 - 它只知道你传递给它的命令行参数。在这种情况下,由于parameters总是等于['B'],所以当您拨打subprocess.call时,您总是调用'B'而没有命令行参数。

+0

好的。如果我有更多的脚本A实例在同一时间运行,会发生什么? –

+1

脚本A的每个实例都会产生脚本B的实例 - 所有这些都不知道对方。 – mgilson