0

我需要使用线程和 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() 方法负责处理子进程,等待它终止。我哪里错了?

4

1 回答 1

1

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

于 2009-07-19T16:29:31.407 回答