2009-07-19 8 views
0

스레드와 SSH를 사용하여 정확한 순간에 여러 개의 원격 작업을 실행해야합니다. 그래서 나는 다음과 같이 씁니다 :스레드, 하위 프로세스 및 좀비

def dojob(hostname): 

    command = "echo Done" 
    p = Popen(['ssh','%[email protected]%s' % (user, hostname), command], stdout=PIPE, shell=False) 
    output = p.communicate()[0].strip() 
    print output 

[...] 

fire_starter = [Timer(t, dojob, [y]) for t,y in zip(instant, hosts)] 

for e in fire_starter: 
    e.start() 

코드는 작동하지만 코드가 작동하지만 내 OS가 좀비로 가득 찼습니다. 솔직히, 나는 communicate() 메소드가 자식 프로세스를 처리하고 그것이 종료되기를 기다리고 있다고 믿었다. 내가 어디서 잘못한거야?

답변

1

pipe/ssh 및 popen()과 관련된 this issue에있는 것처럼 보입니다. 분석 및 해결책 here가 있습니다.