Python Envoy不会运行线程

时间:2012-09-26 09:39:37

标签: python multithreading

我想在后台线程中从python启动此命令,同时使用envoy保持主程序线程运行:

envoy.run('python -m SimpleHTTPServer 9999')

这可以工作但挂起,它不会像应该的那样运行线程,所以当我完成后我不能杀死它。我试着将它包装成一个线程:

class FileServerThread(Thread):
    def __init__(self):
        Thread.__init__(self)
        self.process = None

    def run(self):
        self.process = envoy.run('python -m SimpleHTTPServer 9999')        

    def kill(self):
        self.process.kill

但同样,这不起作用,因为永远不会分配self.process(因为envoy.run不会结束并且永远不会返回)。

任何帮助?

1 个答案:

答案 0 :(得分:1)

我担心您无法使用run执行此操作,但您可以connect执行此操作。

import envoy
p = envoy.connect("python -m SimpleHTTPServer 9999")
print "run here!"
p.kill()

然而,在kill()之后,我发现这个过程变成了僵尸,p.block()会解决它。