Timer 线程、子进程和;僵尸

Timer 线程、子进程和;僵尸,timer,subprocess,zombie-process,Timer,Subprocess,Zombie Process,我需要使用线程和SSH在一个精确的时刻启动几个远程作业。所以我写: def dojob(hostname): command = "echo Done" p = Popen(['ssh','%s@%s' % (user, hostname), command], stdout=PIPE, shell=False) output = p.communicate()[0].strip() print output [...] fire_starter = [Ti

我需要使用线程和SSH在一个精确的时刻启动几个远程作业。所以我写:

def dojob(hostname):

    command = "echo Done"
    p = Popen(['ssh','%s@%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()

代码可以工作,但它让我的操作系统充斥着僵尸。老实说,我相信communicate()方法会处理子进程,等待它终止。我错在哪里?

看起来您遇到了与pipes/ssh和popen()相关的问题。有一个分析和解决方案