1

Python では、ゾンビ プロセスを取得する必要はないように思えます。

たとえば、次のコードでは

    import multiprocessing
    import time

    def func(msg):
        time.sleep(2)
        print "done " + str(msg)

    if __name__ == "__main__":
        for i in range(10):
            p = multiprocessing.Process(target=func, args=('3'))
            p.start()
            print "child"+str(i)
        print "parent"
        time.sleep(100)

すべての子プロセスが終了しても、親プロセスはまだ実行されています。この時点で、を使用してプロセスを確認したところ、ps -ef 機能していないプロセスがないことに気付きました。

これは、Python ではゾンビ プロセスを取得する必要がないということですか?

4

2 に答える 2

0

図書館、特に - を見た後multiprocessing/process.py、私はそれを見ます

  1. Process.start()_current_process._children.add(self)、開始されたプロセスをリスト/セット/その他に追加する があります。
  2. 上記の数行には、_cleanup()終了したプロセスをポーリングして破棄し、ゾンビを削除する があります。

しかし、それではコードがゾンビを生成しない理由を説明できません。子は終了するまでしばらく待機するため、親のstart()呼び出しはまだそれに気付かないからです。

于 2013-05-06T11:09:05.460 に答える