0

envoyを使用してメイン プログラム スレッドを実行したまま、バックグラウンド スレッドで Python からこのコマンドを起動したい:

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 が終了せず、返されないため)。

何か助けはありますか?

4

1 に答える 1

1

残念ながら ではできませんがrun、 でできますconnect

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

しかし、その後kill()、プロセスがゾンビになったことがわかったので、p.block()それを解決します。

于 2012-09-26T10:02:30.727 に答える