0
import multiprocessing as mlp

class Test(mlp.Process):
    def run(self):
        if self.name == "Test-2":
            import time
            time.sleep(4)
        print self.name

jobs = []
for i in range(5):
    m = Test()
    jobs.append(m)
    m.run()
for i in jobs:
    i.join()

上記のコードでは、出力は常に次のようになります。 Test-1 Test-2 Test-3 Test-4 Test-5

そして、これらのプロセスは次々と生成されます。Test-3 と同様に、Test-2 が完了した後にのみスパンします。それらは並行して発生するべきではありませんか???

また、 i.join() はエラーをスローします: AssertionError: can only join a started process

私は何が悪いのですか?

ありがとう...

4

1 に答える 1

2

プロセスを開始したことはありません。このrunメソッドは、正しく実行したサブクラスを実装することを目的としていますが、このメソッドは、プロセスを開始する(そして他のプロセスインスタンスでstart自動的に実行する)ために呼び出す必要があるメソッドです。run()

つまり、のm.start()代わりにを呼び出しますm.run()

于 2012-12-25T15:54:24.277 に答える