2013-01-18 2 views
0

파이썬 스크립트에 이상한 동작이 있습니다. 그래서, 나는 다른 스크립트 B를 여러 번 호출하는 파이썬 스크립트 A를 가지고있다. B를 호출 할 때 서브 프로세스 모듈을 사용하고 있습니다. 스크립트 A의파이썬 하위 프로세스 모듈 - 변수 범위

조각 : 스크립트 B의

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

조각 :

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

그래서, 스크립트 유언장 스크립트 B 여러 번 호출합니다. 일부 테스트 후에 변수 testdata에 현재 실행중인 스크립트 B에 대한 예상 값이 없다는 것을 알았습니다. 스크립트 B를 실행하는 데 어떤 식 으로든 가능합니까? 테스트 데이터은 이전 호출 B의 값을가집니다. 이 경우 변수 테스트 데이터에 대한 범위는 무엇입니까? 충고에 감사하다. 환호

+1

보조 메모로 제목을 변경할 수 있습니다. 'mutliprocessing'은 (약간의 노력으로) 프로세스간에 상태를 공유 할 수있는 완전히 다른 모듈입니다. – mgilson

답변

4

subprocess.call은 하위 프로세스를 시작합니다. 이 프로세스는 A에서 무슨 일이 일어나고 있는지 또는 얼마나 자주 호출되었는지에 대해 아무것도 모릅니다. 알고있는 것만 큼 커맨드 라인 인수가 전달되었습니다. 이 경우 subprocess.call을 호출 할 때 parameters은 항상 ['B']과 같기 때문에 항상 명령 줄 인수가없는 'B'을 호출합니다.

+0

확인. 같은 시간에 스크립트 A가 더 실행되는 경우 어떻게됩니까? –

+1

스크립트 A의 각 인스턴스는 서로를 아는 스크립트 B - 모두의 인스턴스를 생성합니다. – mgilson